如何在不评估命令的情况下从shell脚本编写命令到shell脚本



我正在努力传递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来实现我想要的。

非常感谢你的帮助。

您可以尝试使用单引号(')。您必须在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命令,我希望这个方法会有所帮助。

最新更新