尝试从两个文件(foofile,barfile)中提取条目,并将它们作为参数传递到第三个文件(dothis.sh)中。它适用于bar但不适用于foo,因为这看起来是与范围相关的问题。我也尝试将foo循环嵌套到bar循环中,但没有成功:
#!/bin/bash
while read foo
do
#echo $foo
export foo
done < FooFile
while read bar
do
#echo $bar
export bar
./dothis.sh $bar $foo
done < BarFile
答案 0 :(得分:2)
这是在bash中同时循环两个输入的方法:
#!/bin/bash
while read -u 100 foo && read -u 101 bar; do
./dothis.sh "$foo" "$bar"
done 100<FooFile 101<BarFile
当一个文件没有更多行可读取时,它将终止。
答案 1 :(得分:1)
foo在程序范围内,但为空。
考虑以下代码:
x
结果是:
foo="test"
while read foo; do echo $foo; done < /dev/null
echo "foo=$foo"
问题是当没有输入时,foo将被设置为空。这就是程序中正在发生的事情。
也就是说,请注意oguzismail的评论。 (S)他正在引导您一个好的方向:
foo=
这确实是一个很好的开始,在FooFile和BarFile具有相同条目数的简单情况下,可能只需要这些。