我正在努力传递 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
当我运行“用户 Shell 脚本”时,它会打印出 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 命令,我希望这个方法能有所帮助。
关于linux - 如何在不评估命令的情况下从 shell 脚本向 shell 脚本编写命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41718839/