Bashスクリプトreduxでネストされた引用符を処理する

Bashスクリプトreduxでネストされた引用符を処理する

ネストされた二重引用符を含むbashスクリプトを作成したいと思います。私はすべての一般的なトリック、特に rprint誰もが推奨するトリックを試しました。しかし、私が試したことは何も機能しません。特に引用符を入れ子にすることはできますが、引用符の前に入れることはrprint -v name "%q "できません。\結局のところ、私はこの非常に怠惰なパッチワークを選びました。

shCommand=`echo !ssh -p $othPort!`
execThis=`echo rsync -e $sshCommand etc etc | tr '!' '"'`
eval $execThis

だからexecこれが私が望むものです。

 rsync -e "ssh -p XXXX" etc etc

しかし、これを行うより良い方法が必要です。なぜならa)極度に逆重なりb)私が必要な場合は動作しません!次の行にいいえ絶対に使わない特殊文字ですbash。この状況で、実際のbashプログラマーが何をするのか教えてくれる人はいますか?どんなアドバイスでも心から感謝します

ベストアンサー1

othPort=XXXX
shCommand="ssh -p $othPort"
cmdline=(rsync -e "$shCommand" etc etc)
"${cmdline[@]}"
othPort=XXXX
shCommand="ssh -p $othPort"
cmdline="rsync -e \"$shCommand\" etc etc"
eval "$cmdline"

おすすめ記事