我是 shell 脚本的新手,如果之前有人问过这个问题,我深表歉意。
我有一个像这样的文件坐标.txt:
765442
866447
755343
097754
我想将文件每一行的每个值传递给一个变量,并将这些值一个一个地用作命令行中的输入,并将该数字保存在文件名的一部分中。我写了以下代码,但不确定这是否是正确的方法......
cat coordinates.txt | while read LINE; do
var="$(echo $LINE)"
/home/users/scripts/TreeView/TreeView.sh -o $NAME_ALL.chr1.new_estimate.trees.$var --bp_of_interest $var
done
所以在输出中 -o 每个值都附加到文件名,每个值也用作--bp_of_interest,一次一个
任何建议高度赞赏。谢谢
你的循环最好写成
这会改变以下内容:
/home/users/scripts/TreeView
在前面加了$PATH
。这允许我们在TreeView.sh
没有附加绝对路径的情况下进行调用。var
变量,因为它与从输入文件中读取的值相同。IFS= read -r line
“理解”IFS= read -r line“ ”。cat
在这种情况下不需要使用。做同样事情的另一种方法:
这用于
xargs
将从 的每一行读取的数据插入脚本coordinates.txt
的参数中由 表示的位置。TreeView.sh
{}
您甚至可以添加
-P n
到xargs
命令行(例如 before-I {}
,其中n
是某个数字)以一次运行脚本的多个并行实例,每个实例都将适当的数据从coordinates.txt
.