1.問題の説明:
リモートサーバーにSSHで接続し、いくつかのスクリプトを実行する必要があるスクリプトがあります。
しかし、リモートサーバーで定義された値を使用しようとすると、いくつかの問題が発生しました。
「\ $」を使用してリモートサーバーで定義されている値を参照していますが、値が定義されていないと表示されます。
2.エラーメッセージ:
3.スクリプト:
#!/bin/bash
myusrname="xxx"
myhost="xxx"
mypsword="xxx"
/usr/bin/expect<<-EOF
spawn ssh -o "StrictHostKeyChecking=no" $myusrname@$myhost
expect "*password*"
send "$mypsword\r"
expect "*#*"
send "tst=\"just a test string\"\r"
expect "*#*"
send "echo \$tst\r"
EOF
あなたがしたい場合は$tst
、リモートシェルによって解釈されるように、あなたは両方の中にそれをエスケープする必要があるexpect
とあなたは地元のシェル変数の展開を可能にするために、引用符で囲まれていないEOFを使用していることから、地元のシェル内$mypassword
だから試してみてください
send "echo \\\$tst\r"
そうすれば、ローカルシェルのヒアドキュメントが出力さ\
れ$
、expect
が表示されます。\$tst
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加