LINUX.ORG.RU

История изменений

Исправление 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