我有一个bash脚本具有以下命令
rm ${thefile}
Run Code Online (Sandbox Code Playgroud)
为了确保命令执行成功,我使用$?变量来检查状态,但是这个变量没有显示确切的错误?为此,我使用以下命令将标准错误输出重定向到日志文件:
rm ${file} >> ${LOG_FILE} 2>&1
Run Code Online (Sandbox Code Playgroud)
使用此命令,我无法使用$?变量来检查rm命令的状态,因为命令后面的rm命令已成功执行,因此$?变量在这里是没用的.
我是否知道有一个解决方案可以结合我能够检查rm命令状态的两个功能,同时我允许重定向输出?
使用此命令,我无法使用
$?变量来检查rm命令的状态,因为命令后面的rm命令已成功执行,因此$?变量在这里是没用的.
那明显是错的.所有重定向都是单个命令的一部分,并$?包含其退出状态.
您可能正在考虑的是在管道中排列多个命令的情况:
command-1 | command-2
Run Code Online (Sandbox Code Playgroud)
执行此操作时,$?将设置为管道中最后一个命令的退出状态(在本例中command-2),您需要使用该PIPESTATUS数组来获取其他命令的退出状态.(在这个例子中${PIPESTATUS[0]}是的退出状态command-1以及${PIPESTATUS[1]}相当于$?.)