リモートホストでsshを試み、.zshrc
ホスト上のファイルに環境変数をロードしてから、その環境変数を使用してコマンドを実行しようとします。
これはこれまで私のスクリプトです。
#!/usr/bin/expect -f
spawn ssh hostname
send "echo $my_variable\n"
interact
私のリモートホストのファイルには、.zshrc
次の内容が含まれています。
export my_variable=banana_tree
上記のスクリプトを実行すると、次のような結果が出力されます。
spawn ssh hostname
can't read "my_variable": no such variable
while executing
"send "echo $my_variable\n""
(file "/Users/me/myscript.sh" line 6)
予想される変数がスクリプトを実行している環境で定義されていないため、見つからないというエラーメッセージがわかります。回避策は、スクリプトを実行する変数を定義することですが、保持することをお勧めします。可能であれば、リモートでホストに定義された変数。
答え1
台本からドル記号を抜かなければならなかったので、次のようになりました。
#!/usr/bin/expect -f
spawn ssh hostname
send "echo \$my_variable\n"
interact
ロードしているように見えます.zshrc
が、ホストに環境変数をロードするにはドル記号をエスケープする必要がありますが、スクリプトで環境変数を定義するにはドル記号をエスケープしません。