我想检索正在子shell中执行的命令的返回状态。
我从Unix Box A
运行以下脚本,它对Box B
具有无密码SSH访问权限,其脚本中的ip_addr
提及其IP。
我想获得在当前环境中在子shell中运行的命令的返回状态。
即如果以下命令失败:
echo "cmd" | system_program> 2>> /dev/null
然后echo $?
应该打印非零值,我应该能够使用该值来决定进一步的行动。
我的脚本片段是:
sample.sh :
ip_addr="xxx.xxx.xx.xx"
status=$(ssh -q -T $ip_addr << EOF
rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null; echo $?
EOF
)
答案 0 :(得分:0)
您不需要here-doc或echo。尝试:
ssh -q -T $ip_addr 'rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null'
或者如果你想使用here-doc set errexit:
status=$(ssh -q -T $ip_addr << EOF
set -o errexit
rm /tmp/program.log; echo "cmd" | system_program> 2>> /dev/null
EOF
)