Обнаружение сбоя значения Bash «экспорта» - PullRequest
3 голосов
/ 29 октября 2008

В Bash я выполняю команду и помещаю результат в переменную, подобную этой:

export var=`svn ls`

Но если SVN по какой-то причине дает сбой - скажем, он возвращает ненулевой код ошибки - экспорт по-прежнему возвращает код состояния 0. Как определить, что выполненная команда не выполнена?

Ответы [ 4 ]

6 голосов
/ 29 октября 2008
var=`svn ls`
if [[ $? == 0 ]]
then
        export var
else
        unset var
fi

$? - это код завершения последней выполненной команды, здесь svn ls.

Решение Jmohr короткое и сладкое. Адаптировано мягко,

var=`svn ls` && export var || unset var

будет приблизительно эквивалентно приведенному выше (export действительного идентификатора никогда не потерпит неудачу, если вы не сделали что-то ужасное и не исчерпали пространство среды). Возьмите все, что вы хотите - я использую unset только для того, чтобы $var не мог иметь значение, даже если оно не экспортируется.

3 голосов
/ 29 октября 2008
var=`svn ls` && export var
1 голос
/ 29 октября 2008

У меня была похожая проблема, это можно сделать так:

rm -f error_marker_file
export var=`svn ls || touch error_marker_file`

[ -f error_marker_file ] && echo "error in executing svn ls"
0 голосов
/ 29 октября 2008
export FOO=$(your-command) || echo "your-command failed"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...