【发布时间】:2012-05-28 08:35:13
【问题描述】:
我正在编写一个名为“run”的 bash 脚本,它使用预定义的输入测试程序。
它接受一个文件作为第一个参数,然后一个程序作为第二个参数。
电话看起来像
./run text.txt ./check
例如,程序“run”会以 text.txt 作为输入运行“check”。这将为我节省大量的程序测试时间。
我现在有
$2 < text.txt > text.created
所以它接受 text.txt 并将其作为输入重定向到指定的程序,这是第二个参数。然后将结果转储到 text.created 中。
我在 text.txt 中有输入,我知道输出应该是什么样子,但是当我 cat text.created 时,它是空的。
有人知道以文件为输入运行程序的正确方法吗?这对我来说似乎很直观,但是“检查”程序是否有问题,而不是我在“运行”脚本中所做的事情?
谢谢!任何帮助都将不胜感激!
编辑:文件 text.txt 包含多行文件,每行都有一个程序“检查”的输入。
也就是说,text.txt 可以包含
asdf1.txt asdf2.txt asdf3.txt
我想对每个文件 asdf1.txt、asdf2.txt、asdf3.txt 进行测试检查。
【问题讨论】:
-
您所拥有的是运行以
text.txt作为标准输入 的程序的正确方法。你确定这是程序所期望的吗? (不同的节目有不同的期望,你知道吗?) -
@dmckee 甜蜜!那么 text.txt 包含不带引号的“让我们去”,而“检查”需要两个参数。奇怪的是 text.created 中没有任何内容
-
啊...将文件重定向到标准输入强调不与使用文件的内容作为参数相同。回答跟随。
-
我已经修改了我的答案 - 现在它使用参数,而不是标准输入
-
@dmckee 我添加了一些可能会改变一些东西的编辑。 :)
标签: bash unix parameters file-io