私はBashのHeredoc構文に深く混乱しています。 /home/some_user/check.txt:そのようなファイルやディレクトリはありませんHeredoc、Bashにそのようなファイルやディレクトリがありません
#!/bin/bash
user="some_user"
server="some_server"
address="$user"@"$server"
printf -v user_q '%q' "$user"
function run {
ssh "$address" /bin/bash "[email protected]"
}
run << SSHCONNECTION1
sudo dpkg-query -W -f='${Status}' nano 2>/dev/null | grep -c "ok installed" > /home/$user_q/check.txt
softwareInstalled=$(cat /home/$user_q/check.txt)
SSHCONNECTION1
を私は何を得る
猫である:ここでは
は私がやっていることは何ですこれは非常に奇妙です。なぜなら、私がSSHを使用して接続し、次のパスをチェックするとファイルが存在するからです。
私は間違っていますか?ファイルは実行可能ではなく、テキストファイルです。 ありがとうございます。
'$(cat ...)'コマンドがローカルで実行されています。 –
btw、以前の質問でリンクした別の答えを書き留めておいてください( 'printf '%q'" $ @ "'を使ってargvリストを生成し、それをコマンドラインでリモートシェルに渡してから、 '$ 1'、' $ 2'などで、これは避けられるシナリオの1つです)。 –
...リモートの '/ bin/sh'が' printf '%q''が生成したものを解析できる必要があるという警告がありますが、これはbashやkshではない場合に問題になるかもしれないし、あなたの議論で –