Ответ 1
$?
означает код возврата последней выполненной команды.
2>
означает перенаправление вывода stderr
(стандартный поток ошибок) на /dev/null
.
Итак, я узнал, что bash не обрабатывает исключения (нет try/catch). Для моего script я хотел бы знать, была ли команда успешной или нет.
Это часть моего кода прямо сейчас:
command = "scp -p$port $user:[email protected]$host:$from $to"
$command 2>/dev/null
if (( $? == 0 )); then
echo 'command was successful'
else
echo 'damn, there was an error'
fi
То, что я не понимаю, это:
2
за $command
?$
? $?
означает код возврата последней выполненной команды.
2>
означает перенаправление вывода stderr
(стандартный поток ошибок) на /dev/null
.
Просто FYI, это также будет работать:
if some_command 2>/dev/null ; then
echo 'command was successful'
else
echo 'damn, there was an error'
fi