13

所以我发现 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 行,这到底是什么$
4

2 回答 2

26

$?表示最后执行的命令的返回码。

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

于 2013-02-19T18:19:30.770 回答
11

仅供参考,这也将起作用:

if some_command 2>/dev/null ; then
    echo 'command was successful'
else
    echo 'damn, there was an error'
fi
于 2013-02-19T18:52:46.753 回答