История изменений
Исправление vodz, (текущая версия) :
Но в конструкции if `program` мы не всегда получим код возврата. Если программа выдает что-то на экран, то код возврата внутри скрипта мы не получим. Есть мысль, что надо как-то сначала избавиться от ее стандартного вывода, куда-то день эти результаты.
Нет, вы получите всегда код возврата. Вам намекали, что если ваша `program` есть список программ через трубы: `cmd1 | cmd2`, то код возврата будет не у той программы, что вызвала проблему, (хотя и это можно добиться отпцией pipefail, см документацию на bash), а последней.
Поразмыслите:
$ ls x
ls: cannot access x: No such file or directory
$ if `ls x 2> /dev/null`; then echo Ok; else echo $?; fi
2
$ if `ls x 2> /dev/null | echo`; then echo Ok; else echo $?; fi
Ok
Исходная версия vodz, :
Но в конструкции if `program` мы не всегда получим код возврата. Если программа выдает что-то на экран, то код возврата внутри скрипта мы не получим. Есть мысль, что надо как-то сначала избавиться от ее стандартного вывода, куда-то день эти результаты.
Нет, вы получите всегда код возврата. Вам намекали, что если ваша `program` есть список программ через трубы: `cmd1 | cmd2`, то код возврата будет не у той программы, что вызвала проблему, (хотя и это можно добиться отпцией pipefail, см документацию на bash), а последней.
Поразмыслите:
$ ls x
ls: cannot access x: No such file or directory
$ if `ls x`; then echo Ok; else echo $?; fi
ls: cannot access x: No such file or directory
2
$ if `ls x 2> /dev/null | echo`; then echo Ok; else echo $?; fi
Ok