我有下面的 shell 脚本。它在一台主机上运行良好。在第二个上它不起作用。当我删除 2>&1 << 'EOF' 时,它在第二台主机上工作正常。 2>&1 << 'EOF' 是什么意思?为什么它在一台主机上运行良好,但在第二台主机上却不起作用?
谢谢
start () {
case ${1} in
APP1)
ssh -q user@host 2>&1 << ‘EOF’
exit $?
EOF
;;
APP2)
ssh -q user@host 2>&1 << ‘EOF’
exit $?
EOF
;;
}
答案1
问题出在外面的某个地方。
由于您有两个不同的主机,并且脚本正在使用ssh
,我建议首先查看网络。有可能一台主机已连接到目标主机,而另一台主机则没有。
-q
ssh 命令中的密钥会抑制 ssh 可以给出的大多数警告和诊断,并将2>&1
stderr 重定向到 stdout,但由于您已经抑制了它们 - 重定向是毫无意义的。
这里<< 'EOF'
不是罪魁祸首。至少我无法想象它会怎样。除非其中一台主机的shell真的坏了并且不知道如何处理此处文档在引用的变体中。
答案2
问题与 ssh 连接问题有关。