Scripting
處理 bash 腳本 redux 中的嵌套引號
我想建構一個包含嵌套雙引號的 bash 腳本。我已經嘗試了所有常用的技巧,尤其
rprint
是每個人都推薦的技巧。但是我嘗試過的任何東西都不起作用。特別是,rprint -v name "%q "
讓我嵌套引號,但我無法處理\
它放在引號前面的 ‘s。最後我選擇了這個極其粗糙的組合:shCommand=`echo !ssh -p $othPort!` execThis=`echo rsync -e $sshCommand etc etc | tr '!' '"'` eval $execThis
因此 execThis 就是我想要的,即
rsync -e "ssh -p XXXX" etc etc
但是必須有更好的方法來做到這一點,因為a)它非常粗糙,b)如果我需要它就行不通!在下一行中 — 似乎沒有
bash
從未使用過的特殊字元。有人能告訴我真正的 bash 程序員在這種情況下會做什麼嗎?非常感謝您的任何建議
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"