说我有一个名为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
谢谢。
如果我不知道我的脚本需要多少个参数呢?
答案 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
运行脚本。