我正在逐行从文件中读取参数,但每行都有几个参数。代码的要点如下
cat file.txt | while read LINE ; do
echo -e `./foo.sh "$COUNT" "$LINE"`
done
foo.sh
#!/bin/bash
echo "$2t$3t$4"
文件.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 函数通过调试工作,所以我把它缩小到行阅读器。对我出错的地方有什么帮助吗?
我认为您需要执行以下操作之一:
- 取消变量的引号。
- 评估字符串
所以它变成:
echo -e `./foo.sh "$COUNT" $LINE`
或
echo -e `eval ./foo.sh "$COUNT" "$LINE"`
否则,bash 将调用foo.sh
传递$LINE
作为单个参数。通过显式评估它,bash 将首先生成最终的命令字符串,然后重新解释它,实际上将$LINE
拆分为单独的参数。
希望这有帮助=)
理由将外部命令嵌套在回显中? 这样的事情呢? 我只是在 foo.sh 中的回声中添加了 -e,并在外部调用中取出了回声。
cat foo.txt | while read LINE ; do
./foo.sh $COUNT $LINE
done
foo.sh:
#!/bin/bash
echo -e "$2t$3t$4"