确保命令已在 bash 中执行

Jis*_*air 7 shell bash error-handling

我有一个 bash 文件,其中包含合并 pcap 文件的命令。我想知道是否有办法确保 bash 中的一行运行。就像在 windows bat 文件中一样,我们有 %ErrorLevel% ¨ 说一个命令

touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap 
Run Code Online (Sandbox Code Playgroud)

我如何确保这是运行?

Bru*_*ger 12

Shell 旨在轻松完成此类操作。

if touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap 
then
    echo "Command ran successfully."
else
    echo "Command had an error: $?"
fi
Run Code Online (Sandbox Code Playgroud)

您偶尔会发现一些专有命令在成功时不会以 0 状态退出,在失败时不会以非零状态退出,但幸运的是,这些异常几乎消失了。


cas*_*sey 9

bash 变量$?保存上次命令运行的退出状态。对于典型程序,该值为0成功,任何其他值为失败。特定的返回码应记录在相关程序的手册页中。

您可以使用以下代码:

touch -r dcn_file "${dir_dcn}"/"${TAG1_dcn}".pcap
[ $? -ne 0 ]; then
   echo "Command failed: touch: $?"
   return $?
fi
Run Code Online (Sandbox Code Playgroud)

测试返回代码,然后打印错误消息,并使用相同的错误代码退出脚本。