2>&1 < EOL 是什么意思

2>&1 < EOL 是什么意思

我有下面的 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,我建议首先查看网络。有可能一台主机已连接到目标主机,而另一台主机则没有。

-qssh 命令中的密钥会抑制 ssh 可以给出的大多数警告和诊断,并将2>&1stderr 重定向到 stdout,但由于您已经抑制了它们 - 重定向是毫无意义的。

这里<< 'EOF'不是罪魁祸首。至少我无法想象它会怎样。除非其中一台主机的shell真的坏了并且不知道如何处理此处文档在引用的变体中。

答案2

问题与 ssh 连接问题有关。

相关内容