変数の中で一重引用符をエスケープする必要があります。シェルスクリプトの一重引用符をエスケープする
ssh_command 'file=$(hostname)_server-setup_$(date +%Y-%m-%d).tar.gz && cd /var && tar -zcvf $file ini | wc -l | xargs printf \'Num files: %d, File: $file\''
私は二重引用符で変数を囲むことができますが、その変数が宣言されたときに内部変数が評価され、そしてそれは私が欲しいものではありません。
ssh_command "file=$(hostname)_server-setup_$(date +%Y-%m-%d).tar.gz && cd /var && tar -zcvf $file ini | wc -l | xargs printf 'Num files: %d, File: $file'"
は今、このが出ているが、SSHを介して複雑なコマンドの上に送信する場合、その後$file
がちょうど$file
ssh_command(){
ssh [email protected] $1
}
ssh_command 'file=$(hostname)_server-setup_$(date +%Y-%m-%d).tar.gz && cd /var && tar -zcvf $file ini | wc -l | xargs printf '"'"'Num files: %d, File: $file'"'"
出力
Num files: 61, File: $file
ここで希望の出力とは何ですか。 $ fileの値は何ですか? – OscarAkaElvis
[一重引用符で囲まれた文字列でシングルクォートをエスケープする方法](http://stackoverflow.com/questions/1250079/how-to-escape-single-quotes-within-single-quoted-strings) –
出力は 'Num files:x、File:/ path/to/tar' – clarkk