次のシェルスクリプトがあります。 1つのホストでうまく機能します。 2番目では動作しません。 2>&1 << 'EOF' を削除すると、2 番目のホストで正常に動作します。 2>&1 << 'EOF'とはどういう意味ですか? 1つのホストでは正常に動作しますが、2番目のホストでは機能しないのはなぜですか?
ありがとう
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
問題は私の外のどこかにあります。
2つの異なるホストがあり、スクリプトを使用しているので、まずssh
ネットワークを調べることをお勧めします。あるホストは宛先ホストに接続され、もう一方のホストは接続されていない可能性があります。
-q
sshコマンドのキーは、sshが提供できるほとんどの警告と診断を抑制し、2>&1
stderrをstdoutにリダイレクトしますが、すでにこれを抑制しているため、リダイレクトは意味がありません。
犯人はここにありません<< 'EOF'
。少なくとも私はそれがどうか想像できません。ホストのシェルの1つが実際に破損し、どうすればいいかわからない場合ここのドキュメント引用された変形から。
答え2
問題はSSH接続の問題に関連しています。