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
returnseharusnya 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 whileloop:
$ 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.
whiletidak diperlukan untuk reproduksi? Itu mengalihkan perhatian dari intinya.
whileLoop 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 ...