Почему «local» очищает код возврата команды?

Этот фрагмент Bash работает так, как я ожидал:

$ fun1() { x=$(false); echo "exit code: $?"; }
$ fun1
exit code: 1

Но этот, использующий local , не работает:

$ fun2() { local x=$(false); echo "exit code: $?"; }
$ fun2
exit code: 0

Кто-нибудь может объяснить, почему local развернуть код возврата команды?

56
задан tokland 4 December 2017 в 19:02
поделиться