我正在逐行读取文件中的参数,但每行都有几个参数。代码的要点在
之下cat file.txt | while read LINE ; do
echo -e `./foo.sh "$COUNT" "$LINE"`
done
foo.sh
#!/bin/bash
echo "$2\t$3\t$4"
file.txt的
0 0 0
0 0 1
0 1 0
0 0 1
返回。请注意,它没有标签
0 0 0
0 0 1
0 1 0
0 0 1
这是我正在尝试做的更简单的例子;我的foo.sh实际上是使用参数进行sql调用。我知道我的foo.sh函数通过调试工作,所以我把它缩小到了行读者。对我出错的地方有任何帮助吗?
答案 0 :(得分:2)
我认为你需要这样做:
所以它变成了:
echo -e `./foo.sh "$COUNT" $LINE`
或
echo -e `eval ./foo.sh "$COUNT" "$LINE"`
否则bash会将foo.sh
作为单个参数调用$LINE
。通过显式计算它,bash将首先生成最终的命令字符串,然后重新解释它,实际上将$LINE
拆分为单独的参数。
希望这有助于=)
答案 1 :(得分:1)
你有没有理由在echo中嵌套外部命令?这样的事情怎么样?我刚刚在foo.sh中添加了-e并在外部调用中取出了echo。
cat foo.txt | while read LINE ; do
./foo.sh $COUNT $LINE
done
foo.sh:
#!/bin/bash
echo -e "$2\t$3\t$4"