Я хотел бы вернуть код выхода «0» из неудавшейся команды. Есть ли более простой способ сделать это, а не:Как вернуть код выхода 0 из неудавшейся команды
function a() {
ls aaaaa 2>&1;
}
if ! $(a); then
return 0
else
return 5
fi
Я хотел бы вернуть код выхода «0» из неудавшейся команды. Есть ли более простой способ сделать это, а не:Как вернуть код выхода 0 из неудавшейся команды
function a() {
ls aaaaa 2>&1;
}
if ! $(a); then
return 0
else
return 5
fi
Просто добавьте return 0
к функции, чтобы заставить функцию всегда выйти успешным.
function a() {
ls aaaaa 2>&1
return 0
}
a
echo $? # prints 0
Если вы хотите сделать это рядным по любой причине можно добавить запись || true
к команде:
ls aaaaa 2>&1 || true
echo $? # prints 0
Если вы хотите, чтобы инвертировать статус выхода простую PREPEND команды с !
! ls aaaaa 2>&1
echo $? # prints 0
! ls /etc/resolv.conf 2>&1
echo $? # prints 1
Также, если вы заявляете, чего вы пытаетесь достичь в целом, мы можем помочь вам лучше ответить.
Если файл отсутствует, 'ls /etc/resolv.conf 2> & 1' будет вызывать уродливую ошибку в консоли :) – Inian
Это будет , Вывод может быть полностью подавлен заменой '2> & 1' на' &>/dev/null' или stderr только может быть подавлен путем замены его на '2>/dev/null'. –
Как насчет 'возвращения! a' – user000001
Нет необходимости в подстановке команд, простое использование 'if! а; то ... ' – andlrc
, если вывод' stderr' записывается в 'stdout', в случае сбоев команды скрипт выдает неприятную ошибку, которую можно избежать, отключив вывод команды и получив только статус выполнения команды из '$?' – Inian