有人可以在bash中解释这个try / catch替代方案吗?

时间:2013-02-19 18:15:41

标签: bash try-catch

所以我发现bash不处理异常(没有try / catch)。 对于我的脚本,我想知道命令是否成功。

这是我现在代码的一部分:

command = "scp -p$port $user:$password@$host:$from $to"
$command 2>/dev/null

if (( $? == 0 )); then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi

我不明白的是:

  • 第3行,为什么我必须将2放在$command后面?
  • 第5行,这个$究竟是什么?

2 个答案:

答案 0 :(得分:26)

$?表示上次执行的命令的返回码。

2>表示将stderr(标准错误流)输出重定向到/dev/null

答案 1 :(得分:11)

仅供参考,这也有效:

if some_command 2>/dev/null ; then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi