小编典典

Bash 脚本 - 变量内容作为要运行的命令

all

我有一个 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,但输出不正确(如果我手动运行命令它工作正常,所以没有问题)。这样做的正确方法是什么?

PS:当然我可以在 Perl 中完成所有工作,但我正在尝试以这种方式学习,因为它可以在其他情况下帮助我。


阅读 59

收藏
2022-08-02

共1个答案

小编典典

你只需要这样做:

#!/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.
2022-08-02