Ostatnio mam dziwne problemy z bash. Próbując uprościć mój skrypt, wymyśliłem ten mały fragment kodu:
$ 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
powinien był wyjść z funkcji bez drukowania $?
, prawda? Cóż, wtedy sprawdziłem, czy mogę sam wrócić z rury:
$ echo | while read -r; do return 1; done
bash: return: can only `return' from a function or sourced script
To samo dzieje się bez while
pętli:
$ foo(){ : | return 1; echo "This should not be printed.";}
$ foo
This should not be printed.
Czy czegoś tu brakuje? Wyszukiwarka Google nic nie przyniosła! Moja wersja bash to 4.2.37 (1) - wydanie na Debian Wheezy.
while
nie są one potrzebne do reprodukcji? Odwraca uwagę od rzeczy.
while
Pętla jest bardzo powszechnym zastosowaniem dla potoku z return
. Drugi przykład jest bardziej bezpośredni do rzeczy, ale nie sądzę, aby ktokolwiek kiedykolwiek użyłby ...