【发布时间】:2009-09-22 02:06:46
【问题描述】:
我正在编写一个 Bash 脚本,其中我正在运行一个 perl 脚本,该脚本需要在其中包含双引号的标志。正常运行脚本,你会运行
$ perl script.pl -flag="something" -anotherflag="somethingelse"
在我的脚本中,我在这些标志中使用了变量,但想保留双引号,所以我有类似的东西:
variable=foo
perl script.pl -flag=\"something\" -anotherflag=\"$variable\"
当我运行 bash -x myscript.sh 时,我看到它在整个标志周围添加单引号,同时保持双引号,导致 perl 脚本出错:
perl script.pl '-flag="something"' '-anotherflag="foo"'
我还尝试了 evaling 整个事情 (eval perl [...]),它完全去掉了双引号。如何让 Bash 在双引号完整的情况下运行脚本?
【问题讨论】:
-
我不明白——你的“尝试运行”中的双引号非常完整,并且前导的破折号似乎神秘地消失了(可能是错字?)——你能更好地解释一下吗?你遇到的问题?顺便说一句,如果不是 varoutput,$ 变量中有什么?
-
前面的破折号是错字。固定。
标签: bash shell escaping quotes