引用符に関するガイドと回答があります。私はそれらを(一日中)読んだことがありますが、私はまだ私の簡単なスクリプトを動作させることができません。変数からrsyncコマンドを実行する - 引用符が付きません
私はscript1.shをセットアップしてコマンドを実行しようとしました。コマンドは変数に読み込まれなければならないので、私はそれをエコーして実行し、後でそれを使って他のものを実行することができます。
私のコマンドが予想通り、私はbashのから、私は私のスクリプトに入れた場合、それを実行した場合、それは動作します
rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path
です。
間に変数を置くと、--excludesはもう働きません。
job='rsync -vtirn -e ssh --exclude '"'"'._*'"'"' --exclude '"'"'[email protected]*'"'"' --exclude '"'"'.DS_Store'"'"' --progress /Path/ [email protected]:/Path
echo $job
$job
奇妙なことは、エコーが私に必要なコマンドを正確に示しているということです。エコー出力をコピーしてシェルに貼り付けると、コマンドが正常に動作しています。しかし、$ jobで始まるコマンドは、excludesを排除しています。
私は二重引用符(/ ')をエスケープして、最初と最後に二重引用符で試しています...多くの異なるオプションがありますが、--exclude' filter '引数は何も考慮されませんでした。機能したのは
job=$(rsync -vtirn -e ssh --exclude '._*' --exclude '[email protected]*' --exclude '.DS_Store' --progress /Path/ [email protected]:/Path)
ですが、このコマンドは変数が設定されるとすぐに開始されます。
ご協力いただきありがとうございます
これについては、[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050)で詳しく説明しています。 –