我正在尝试编写一个 shell 测试程序,它将我的程序的输出与示例程序进行比较。我已将命令列表存储在文本文件中,如下所示: 命令.txt:
echo line A > a
echo line A > b
./program a b
shell 测试如下所示:
cat $testname | while read LINE
do
echo -e "$LINE$"
$LINE
done
但程序不是打包文件 a 和 b,而是生成以下内容:
echo line A > a
line A > a
echo line B > b
line B > b
如何执行命令,就像在 shell 文件中编写的那样,并将输出重定向到另一个文件?
最佳答案
我认为唯一的方法是使用eval
:
cat "$testname" | while read -r; do
echo "$REPLY"
eval "$REPLY"
done
如果您只运行 $LINE
,它将执行分词,但不会执行 I/O 重定向,因此它只会将 >
作为普通参数传递给 回显
。
关于bash - 从测试文件中读取命令并执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622663/