我的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' –