我有下面的代码
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"
。