Bash:逐行传递文件中的参数



我正在逐行从文件中读取参数,但每行都有几个参数。代码的要点如下

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 函数通过调试工作,所以我把它缩小到行阅读器。对我出错的地方有什么帮助吗?

我认为您需要执行以下操作之一:

  1. 取消变量的引号。
  2. 评估字符串

所以它变成:

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"

相关内容

  • 没有找到相关文章

最新更新