如何使用文件的内容作为脚本输入

时间:2013-09-14 19:30:18

标签: bash shell io-redirection

说我有一个名为myscript的脚本,它需要两个参数,应该按以下方式运行:

./myscript 1st 2nd

我还有一个这样的文本文件:

213 432
312 54
34 41
1 32

问题是如何使用文本文件的内容作为输入来运行myscript?

输入重定向应该导致与以下内容完全相同:

./myscript 213 432
./myscript 312 54
./myscript 34 41
./myscript 1 32

谢谢。

如果我不知道我的脚本需要多少个参数呢?

2 个答案:

答案 0 :(得分:2)

您可以使用while read从$ IFS分隔的文本文件中读取两行变量并用它调用myscript:

while read -r A B; do
    ./myscript "$A" "$B"
done < text_file

让每一行作为一个整体参数传递:

while read -r A; do
    ./myscript "$A"
done < text_file

让每一行的每个标记作为参数传递:

while read -ra A; do
    ./myscript "${A[@]}"
done < text_file

答案 1 :(得分:1)

只要您不必在参数中保留任何空格,就可以使用以下命令管理无限数量的参数:

while read -r line
do ./myscript $line
done < text_file

如果你必须保留空格,解释引号等,那么最好的选择可能是:

sed 's%^%./myscript %' text_file | bash

这会在文件中每行的开头插入命令,然后通过bash运行脚本。