如何在不评估命令

时间:2017-01-18 11:58:41

标签: linux shell variables command

我正在努力传递一个shell命令。具体来说,我编写了一个用户将运行的shell文件。在其中,根据用户输入编写另一个shell文件。然后,此文件将传递给提交作业的命令。

现在在这个内部shell文件中,我有一个包含函数的变量。但是,当我运行用户shell脚本时,我无法通过内部shell文件可以使用它的方式传递此函数。

我不能分享我的工作,但我会尝试做一个例子

#User shell script
cat >test.txt <<EOF
#a bunch of lines that are not relevant
var=`grep examples input.txt`
/bin/localfoo -${var}
EOF
# pass test.txt to localfoo2
/bin/localfoo2 /test.txt

当我运行'用户外壳脚本'时,它打印出grep无法找到该文件,但我不想要评估grep。我需要编写它,因此当读取'/ bin / localfoo2 /test.txt'行时,将评估grep。

我尝试了很多东西。我已经尝试过双回蜱,我尝试过使用'echo $(eval $ var)'。但是我通过谷歌搜索找到的方法都没有设法以一种能够实现我想要的方式传递这个var。

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用单引号(&#39;)。 你必须在grep命令和grep命令结束之前输入单引号,如下所示。

#User shell script
cat >test.txt <<EOF
#a bunch of lines that are not relevant
var='`grep examples input.txt`'
/bin/localfoo -${var}
EOF
# pass test.txt to localfoo2
/bin/localfoo2 /test.txt

我不明白你在哪里执行那个grep命令。 如果你想在localfoo脚本中执行grep命令,我希望这个方法会有所帮助。