Я не могу сообразить, что использование Bash eval
при выполнении команды, которая явно завершается со статусом> 0, все еще возвращается с 0. Рассмотрим этот пример:
> eval "$(exit 42)"
> echo $?
0
Команда$(exit 42)
сам по себе имеет код выхода> 0, поэтому, согласно странице man
, eval
должен возвращать себе статус выхода 42
...
eval [arg ...]
The args are read and concatenated together into a single command. This command is
then read and executed by the shell, and its exit status is returned as the value
of eval. If there are no args, or only null arguments, eval returns 0.
Что я неправильно понимаю?