如果heredoc命令失败,如何退出脚本

时间:2016-08-23 13:13:40

标签: bash shell ssh heredoc

我的shell脚本中有一个ssh heredoc,如果heredoc中的其中一个命令出错,我该怎么退出我的shell脚本。

我的shell脚本将是这样的

#!/bin/bash

set -o errexit

loginto_vm() {

    ssh host@IP << ENDSSH

ls n1n

cd n1n

ENDSSH

    echo 'done'

}

loginto_vm

这里是退出ssh heredoc如果&#34; n1n&#34;不存在并打印echo语句,但我希望它退出脚本

3 个答案:

答案 0 :(得分:2)

您可以检查heredoc中任何关键命令的退出状态并退出ssh并显示错误 - 然后检查ssh退出状态以退出脚本

ssh host@IP <<ENDSSH
ls n1n || exit 1
cd n1n || exit 2
ENDSSH
(($?)) && exit 1
echo 'done'

答案 1 :(得分:0)

此处的命令由远程shell执行。您需要在此处的文档中传入.someclass[xml\:lang="da"] { background: red },以便在那里可见;它与运行<span class="someclass" xml:lang="da"> text</span>命令的shell完全分开。

答案 2 :(得分:0)

如果在任何shell脚本中出现任何错误,您可以指示shell退出:

$ sudo su <<EOF              
set -e
echo before
bad-command
echo after
EOF

输出:

before
sh: line 3: bad-command: command not found

通知after未打印。