从文件读取数据以执行Shell脚本

时间:2014-03-11 06:22:38

标签: shell unix

我有一个包含文件列表的'testfiles'文件 EX- TC1 TC2

在脚本中调用上面的文件

test=`cat testfiles`
for ts in $test
do  
    feed.sh $ts >>results

done

当'testfiles'中只有1个测试文件时,此脚本运行正常,但是当有多个文件时,它会因'找不到文件'而失败

如果这是正确的方法,请告诉我

2 个答案:

答案 0 :(得分:0)

你必须逐个读取文件,因为你正在使用testfiles ='Tc1 Tc2'cat正在搜索不存在的名为'Tc1 Tc2'的文件所以使用cut命令用“”作为分隔符和rad文件一循环中的一个。或者您也可以使用sed命令来分隔文件名

答案 1 :(得分:0)

如果文件名没有空格或其他棘手的字符,您的方法应该有效。成功处理文件名中的空格的方法是:

while IFS= read -r ts
do
    feed.sh "$ts" >>results
done <testfiles

如果您的文件名中包含换行符,则上述操作无效,您需要创建testfiles,其名称用空字符代替换行符。

让我们考虑原始代码。当bash替换$test语句中的for时,所有文件名都显示在同一行,而bash将执行分词,这会使任何文件名混乱包含白色空间。 feed.sh $ts行也是如此。由于未引用$ts,因此它也会进行分词。