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

Har*_*van 13 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
Run Code Online (Sandbox Code Playgroud)

我不明白的是:

  • 第3行,为什么我要把2背后的$command
  • 第5行,究竟是什么$呢?

leg*_*ing 26

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

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

  • 那么这是stackoverflow的一次非常短暂的访问,谢谢! (2认同)

Wil*_*iam 11

仅供参考,这也有效:

if some_command 2>/dev/null ; then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi
Run Code Online (Sandbox Code Playgroud)