【发布时间】:2020-04-03 19:59:08
【问题描述】:
我正在尝试生成一个 perl 脚本并从 bash 脚本运行它,但我遇到了问题:
#!/bin/bash
str="perl"
array=( one two three )
for i in "${array[@]}"
do
str=$str" -e 'print \"$i \";'"
done
echo "$str"
echo "AND THE PERL OUTPUT: "
$str
生成输出:
perl -e 'print "one ";' -e 'print "two ";' -e 'print "three ";'
AND THE PERL OUTPUT:
Can't find string terminator "'" anywhere before EOF at -e line 1.
当我手动运行生成的 perl 命令 perl -e 'print "one ";' -e 'print "two ";' -e 'print "three ";' 时,它可以工作,但是当我尝试从 bash 脚本运行它时,我得到 Can't find string terminator "'" anywhere before EOF at -e line 1.
似乎无法弄清楚我在哪里错过了终结者
【问题讨论】:
-
使用
set -x准确查看正在执行的内容 -
啊哈!
exec -c perl -e ''\''print' '"one' '";'\''' -e ''\''print' '"two' '";'\''' -e ''\''print' '"three' '";'\'''