Saya mengalami beberapa masalah aneh dengan bash belakangan ini. Saat mencoba menyederhanakan skrip saya, saya membuat sepotong kecil kode ini:
$ o(){ echo | while read -r; do return 0; done; echo $?;}; o
0
$ o(){ echo | while read -r; do return 1; done; echo $?;}; o
1
return
seharusnya keluar dari fungsi tanpa mencetak $?
, bukan? Baiklah, kemudian saya memeriksa apakah saya dapat kembali dari pipa sendirian:
$ echo | while read -r; do return 1; done
bash: return: can only `return' from a function or sourced script
Hal yang sama terjadi tanpa while
loop:
$ foo(){ : | return 1; echo "This should not be printed.";}
$ foo
This should not be printed.
Apakah ada sesuatu yang saya lewatkan di sini? Pencarian Google tidak menghasilkan apa-apa tentang ini! Versi bash saya adalah 4.2.37 (1) - dirilis di Debian Wheezy.
while
tidak diperlukan untuk reproduksi? Itu mengalihkan perhatian dari intinya.
while
Loop adalah penggunaan yang sangat umum untuk pipa return
. Contoh kedua lebih langsung ke titik, tetapi itu adalah sesuatu yang saya tidak percaya ada yang akan menggunakan ...