【发布时间】:2012-02-25 16:38:13
【问题描述】:
背景:
我正在努力在 SGE 的作业提交程序 qSub 中并行快速调用 bash 命令行表达式。这样做时,我试图提交一个表达式(作为参数)以在另一个脚本中运行,如下所示:
./runArguments.sh grep foo bar.txt > output.txt
runArguments.sh 看起来像这样:
#!/bin/bash
${1} ${2} ${3} etc....to 12
我的想法是我希望在脚本中评估“grep foo bar.txt > output.txt”...而不是在命令行上。在上面的示例中,“grep foo bar.txt”将在 runArguments.sh 执行期间进行评估,但输出重定向将在命令行上进行评估。我最终找到了一个使用“eval”的有效解决方案,如下所示,但我不明白为什么它有效。
问题
1) 为什么
./runArguments.sh eval "grep foo bar.txt > output.txt"
允许将 eval 和表达式作为参数,但是
./runArguments.sh $(grep foo bar.txt > output.txt)
在调用脚本之前在命令行上进行评估? (将 $(grep...) 的输出作为参数)
2) 有更好的方法吗?
提前致谢!
【问题讨论】: