我想构建一个包含嵌套双引号的 bash 脚本。我已经尝试了所有常见的技巧,特别是 rprint
每个人都推荐的技巧。但我尝试过的都不起作用。特别是,rprint -v name "%q "
让我嵌套引号,但我无法处理\
它放在引号前面的 。最后我决定采用这个极其粗糙的拼凑:
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 程序员在这种情况下会做什么吗?非常感谢您的任何建议
答案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"