我的shell脚本中有一个ssh heredoc,如果heredoc中的某个命令出现错误,我该如何退出shell脚本。如果heredoc命令失败,如何从脚本中退出
我的shell脚本会是这样
#!/bin/bash
set -o errexit
loginto_vm() {
ssh [email protected] << ENDSSH
ls n1n
cd n1n
ENDSSH
echo 'done'
}
loginto_vm
这从SSH定界符退出,如果“N1N”是不存在的,并打印echo语句,但我想它从脚本
!/斌/庆典 集-o errexit loginto_vm(){ SSH主机IP @<< ENDSSH LS N1N CD N1N ENDSSH回声 '完成'} loginto_vm – anil
CD应该返回非零,所以ssh应该返回非零值,并且你会期望'set -o errexit'的语义导致脚本中止。然而,'set -o errexit'已知在许多旧壳中都有意想不到的行为,现代壳中无疑存在边缘情况,你真的应该避免它。只要执行'ssh host @ IP << ENDSSH || exit' –