当 tar 失败时,我的 c shell 脚本没有捕获退出状态 2

当 tar 失败时,我的 c shell 脚本没有捕获退出状态 2

我有下面的代码

ssh ${DESTSERVNAME} 'cd /export/home/path/to/dir; Today=`date +%Y%m%d`; tar -cvf file_name.tar *${Today}*.*; gzip file_name.tar'    
if [ $? != 0 ]    
then    
    echo "Something is wrong with connection to ${DESTSERVNAME} or $

{DAILY_DEST_DIR}。请检查 $LOGF 文件,与 ${DESTSERVNAME} 或 ${DAILY_DEST_DIR} 上的文件的连接,${NAME}.sh 异常终止”| mailx -r[电子邮件保护]-s“!!!请阅读$LOGF并采取适当的措施”[电子邮件保护]
出口 1
fi

我不明白为什么我的 if 条件没有捕获 $? = 2
我在 AIX 上,它是 ac shell,而且我的电子邮件线路不工作。
有人能帮帮我吗?

答案1

因此,在你的远程命令中告诉shell 忽略退出状态。记住a; b和之间的区别a && b:前者无论“a”成功还是失败都会运行“b”,而后者如果“a”失败就会停止。

所以你得到的ssh最后的执行的命令始终是 gzip,因为;分隔符不关心前面的分隔符。

相反,使用类似的东西ssh $host "cd /foo && tar --foo && gzip foo.tar"

相关内容