linux – 如何在shell中创建一个包含多列的循环?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何在shell中创建一个包含多列的循环?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1086字,纯文字阅读大概需要2分钟。
内容图文
![linux – 如何在shell中创建一个包含多列的循环?](/upload/InfoBanner/zyjiaocheng/956/01bfdbf740244aefa293ada64a152f4f.jpg)
我有一个包含三列的文件(ID号,x,y)
ifile.txt
1 32.2 21.4
4 33.2 43.5
5 21.3 45.6
12 22.3 32.5
32 21.5 56.3
43 33.4 23.4
44 23.3 22.3
55 22.5 32.4
我想在第2列和第3列上做一个循环,这样就可以了
for x=32.2 and y=21.4; do execute a fortran program
for x=33.2 and y=43.5; do execute the same program
and so on
虽然我的以下脚本正在运行,但我需要它以有效的方式.
s1=1 #serial number
s2=$(wc -l < ifile.txt) #total number to be loop
while [ $s1 -le $s2 ]
do
x=$(awk 'NR=='$s1' {print $2}' ifile.txt)
y=$(awk 'NR=='$s1' {print $3}' ifile.txt)
cat << EOF > myprog.f
...
take value of x and y
...
EOF
ifort myprog.f
./a.out
(( s1++ ))
done
请注意:myprog.f是在cat程序中编写的.例如,
cat << EOF > myprog.f
....
....
take value of x and y
....
....
EOF
解决方法:
在bash中读取文件的简单方法是
while read -r _ x y; do
echo "x is $x, y is $y"
# your Fortran code execution
done < ifile.txt
x is 32.2, y is 21.4
x is 33.2, y is 43.5
x is 21.3, y is 45.6
x is 22.3, y is 32.5
x is 21.5, y is 56.3
x is 33.4, y is 23.4
x is 23.3, y is 22.3
x is 22.5, y is 32.4
内容总结
以上是互联网集市为您收集整理的linux – 如何在shell中创建一个包含多列的循环?全部内容,希望文章能够帮你解决linux – 如何在shell中创建一个包含多列的循环?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。