Di Advanced Bash-Scripting Guide , misalnya 27-4 , baris ke-7 dari bawah, saya telah membaca ini:
Suatu fungsi berjalan sebagai sub-proses.
Saya melakukan tes di Bash, dan sepertinya pernyataan di atas salah.
Pencarian di situs ini, Bash Man, dan mesin pencari saya tidak membawa cahaya.
Apakah Anda punya jawaban dan ingin menjelaskan?
Jawaban:
Panduan Bash-Scripting Lanjutan tidak selalu dapat diandalkan dan skrip contohnya berisi praktik out-tanggal seperti menggunakan backticks yang sudah tidak digunakan lagi untuk substitusi perintah, yaitu,
`command`
daripada$(command)
.Dalam kasus khusus ini, itu sangat salah.
Bagian tentang Fungsi Shell dalam manual Bash (kanonik) secara pasti menyatakan itu
sumber
Fungsi kurung kurawal akan berjalan dalam proses shell panggilan, kecuali jika mereka membutuhkan subkulit mereka sendiri yaitu:
&
Pengalihan atau env ekstra. variabel tidak akan memaksa subkulit baru:
Jika Anda mendefinisikan fungsi dengan tanda kurung alih-alih ikal:
itu akan selalu berjalan dalam proses baru.
Substitusi perintah
$()
juga selalu membuat proses dalam bash (tetapi tidak dalam ksh jika Anda menjalankan builtin di dalamnya).sumber
f() (...)
diizinkan. Apakah ada definisi lain selain{...}
dan(...)
? Di Bash, saya belum menyukai orang lain.function hw { echo hello world; }
sintaks (tidak perlu()
jika Anda mengetikfunction
dan Anda dapat menentukan pengalihan tepat setelah final}
atau)
seperti padahw(){ echo error; } >&2
. Itu saja.f()(...)
selalu jalankan shell sendiri, sementaraf(){...}
tidak.foo() [[ x = x ]]
definisi fungsi juga valid. Namun, jika Anda melihat fungsinya dengantype foo
Anda akan melihat bahwa ini masih gula sintaksis untukfoo() { [[ x = x ]]; }
. Hal yang sama berlaku untuk fungsi subkulit:bar() ( : )
menjadibar() { ( : ); }
.Perintah yang dimaksud dari contoh itu terlihat seperti:
Contohnya nanti menyatakan:
Menjadi dermawan untuk ABS Guide, apa yang tampaknya dimaksudkan untuk ditulis adalah bahwa fungsi berjalan di dalam substitusi perintah dan perintah di dalam substitusi perintah berjalan dalam sebuah subkulit .
sumber