程序测试员,bash
Program tester, bash
我正在尝试使用多个输入文件测试程序 (tp3) 并在另一个文件中打印输出。所以我设计了以下 bash 脚本名称 运行ner 来同时做所有事情:
#!/bin/bash
rm
clear
FILES=(`ls `)
cmd='./tp3'
for f in ${FILES[*]}
do
echo "$f"
echo "--------------<$f>--------------" >>
$cmd < $f 2>> >>
done
每次我 运行 这个脚本我都会收到以下错误:
./runner: line 10: : ambiguous redirect
./runner: line 11: testtest: No such file or directory
为了 运行 我做的 bash 脚本:
./runner test
脚本有什么问题?
修改使其工作:
首先,我引用了变量,然后我为名为 "TEST" 的文件替换了第二个参数“$2”,现在一切正常。
新代码:
#!/bin/bash
rm TEST
clear
FILES=(`ls *.in`)
cmd='./tp3'
for f in ${FILES[*]}
do
echo "$f"
echo "--------------<"$f">--------------" >> "TEST"
"$cmd" < "$f" >> "TEST" 2>> "TEST"
done
感谢大家的帮助。
你是 运行 ./runner test
其中 test
是 </code> 而 <code>
是空的。因此,您的重定向是非法的。当指向相同的输出时,也尝试耦合 stdout 和 stderr。这可以按如下方式完成:command arguments > output 2>&1
。这会将 stderr 输出发送到发送 stdout 输出的位置。
此外,正如 Wintermute 指出的那样:引用变量。变量中的空格将使其被解释为单独的参数。例如例如,如果 </code> 等于 <code>some string
,command
会向 command
提供两个参数。
这转化为以下内容:您使用 $f
如果它包含 space 它将拆分参数并且 space 之后的所有内容将被视为额外的参数或命令而不是不止一个参数。
我正在尝试使用多个输入文件测试程序 (tp3) 并在另一个文件中打印输出。所以我设计了以下 bash 脚本名称 运行ner 来同时做所有事情:
#!/bin/bash
rm
clear
FILES=(`ls `)
cmd='./tp3'
for f in ${FILES[*]}
do
echo "$f"
echo "--------------<$f>--------------" >>
$cmd < $f 2>> >>
done
每次我 运行 这个脚本我都会收到以下错误:
./runner: line 10: : ambiguous redirect
./runner: line 11: testtest: No such file or directory
为了 运行 我做的 bash 脚本:
./runner test
脚本有什么问题?
修改使其工作: 首先,我引用了变量,然后我为名为 "TEST" 的文件替换了第二个参数“$2”,现在一切正常。
新代码:
#!/bin/bash
rm TEST
clear
FILES=(`ls *.in`)
cmd='./tp3'
for f in ${FILES[*]}
do
echo "$f"
echo "--------------<"$f">--------------" >> "TEST"
"$cmd" < "$f" >> "TEST" 2>> "TEST"
done
感谢大家的帮助。
你是 运行 ./runner test
其中 test
是 </code> 而 <code>
是空的。因此,您的重定向是非法的。当指向相同的输出时,也尝试耦合 stdout 和 stderr。这可以按如下方式完成:command arguments > output 2>&1
。这会将 stderr 输出发送到发送 stdout 输出的位置。
此外,正如 Wintermute 指出的那样:引用变量。变量中的空格将使其被解释为单独的参数。例如例如,如果 </code> 等于 <code>some string
,command
会向 command
提供两个参数。
这转化为以下内容:您使用 $f
如果它包含 space 它将拆分参数并且 space 之后的所有内容将被视为额外的参数或命令而不是不止一个参数。