我有一个 Perl 脚本,它给我一个定义的随机数列表,这些随机数对应于文件的行。接下来我想使用从文件中提取这些行sed
.
#!/bin/bash
count=$(cat last_queries.txt | wc -l)
var=$(perl test.pl test2 $count)
变量var
返回如下输出:cat last_queries.txt | sed -n '12p;500p;700p'
。问题是我无法运行最后一个命令。我尝试过$var
,但输出不正确(如果我手动运行该命令,它工作正常,所以没有问题)。这样做的正确方法是什么?
P.S:当然我可以用 Perl 完成所有工作,但我正在尝试以这种方式学习,因为它可以在其他情况下帮助我。
你只需要做:
#!/bin/bash
count=$(cat last_queries.txt | wc -l)
$(perl test.pl test2 $count)
但是,如果您想稍后调用 Perl 命令,并且这就是您想将其分配给变量的原因,那么:
#!/bin/bash
count=$(cat last_queries.txt | wc -l)
var="perl test.pl test2 $count" # You need double quotes to get your $count value substituted.
...stuff...
eval $var
根据 Bash 的帮助:
~$ help eval
eval: eval [arg ...]
Execute arguments as a shell command.
Combine ARGs into a single string, use the result as input to the shell,
and execute the resulting commands.
Exit Status:
Returns exit status of command or success if command is null.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)