0

我有示例文件:test_file

//--- Test File--
**RUN_THIS
RUN_THIS00
RUN_THIS01
DONT_RUN00
DONT_RUN00
RUN_THIS02**

其中RUN_THIS*&DONT_RUN*是命令。我想只从 test_file 运行 RUN_THIS 命令而不编辑文件。我正在寻找类似的选项

cat test_file | grep RUN_THIS | xargs  {Some option to be provided to run run_this}

我无法启动新外壳

4

3 回答 3

0

大概是这样的?

for cmd in $(grep RUN_THIS < test_file); do
    $cmd --some-option-to-be-provided-to-run-this
done

只要test_file.

于 2011-06-25T05:06:33.240 回答
0
eval `grep RUN_THIS test_file`

还要注意避免无用使用 Cat。

实际上,您可能必须在 中的每个命令的末尾添加一个分号test_file,或者将 更改为grep添加必要分号的内容。

eval `awk '/RUN_THIS/ { print; print ";" }'`

我不确定我是否理解不启动新外壳的要求。在幕后,反引号运行一个子shell,因此这可能违反该要求(但最终每个外部命令都会启动一个新进程,当您运行shell脚本时,该进程作为当前shell进程的一个分支开始)。如果您害怕安全隐患,那么无论如何,您一开始就不应该使用 shell 脚本。

于 2011-08-04T13:11:33.060 回答
-1

要运行新的 shell,您需要在命令中加入“ksh”。

以最简单的形式

RUN_THIS00='ls'
echo $RUN_THIS00 | ksh
于 2011-08-30T05:41:49.577 回答