成对数据上的bash迭代
我用bash脚本执行了一个程序成对数据上的bash迭代,bash,loops,Bash,Loops,我用bash脚本执行了一个程序 mydata=$(myprogram等) 它提供如下数据: echo$mydata foo1 bar1 foo2 bar2 foo\u n bar\n 我想迭代$mydata传递给另一个命令,如下所示: 另一个命令foo1 bar1 问题:如何使用bash实现这一点?问题2:以另一种方式交付数据会大大简化事情吗?例如,如果数据如下所示: foo1bar1 foo2bar2。。。foo\u n bar\n您可以使用以下脚本: while read a; read
mydata=$(myprogram等)
它提供如下数据:
echo$mydata
foo1
bar1
foo2
bar2
foo\u n
bar\n
我想迭代$mydata
传递给另一个命令,如下所示:
另一个命令foo1 bar1
问题:如何使用bash实现这一点?问题2:以另一种方式交付数据会大大简化事情吗?例如,如果数据如下所示:
foo1bar1 foo2bar2。。。foo\u n bar\n
您可以使用以下脚本:
while read a; read b; do
another_command "$a" "$b"
done < file
在读取一个文件时;读b;做
另一个命令“$a”“$b”
完成<文件
您可以使用以下脚本:
while read a; read b; do
another_command "$a" "$b"
done < file
在读取一个文件时;读b;做
另一个命令“$a”“$b”
完成<文件
您可以使用xargs
命令
echo $mydata | xargs -n 2 another_command
例如:
$ echo foo1 bar1 foo2 bar2 | xargs -n 2 echo PAIR
PAIR foo1 bar1
PAIR foo2 bar2
如果输入用空格或换行符分隔,则使用默认选项的
xargs
无关紧要您可以使用xargs
命令
echo $mydata | xargs -n 2 another_command
例如:
$ echo foo1 bar1 foo2 bar2 | xargs -n 2 echo PAIR
PAIR foo1 bar1
PAIR foo2 bar2
如果输入由空格或换行符分隔,则使用默认选项的xargs
并不重要您可以使用数组
声明数组
declare -a mydata
然后将输出保存到数组,在(和之间运行命令)
及
对于((i=0;$i您可以使用数组
声明数组
declare -a mydata
然后将输出保存到数组,在(和之间运行命令)
及
for((i=0;$iYou也可以一次只读两行:读foo;读bar;执行另一个_命令“$foo”“$bar”;完成
@chepner:谢谢,这样会更好。您也可以一次只读两行:读foo;读bar;执行另一个_命令“$foo”“$bar”;完成
@chepner:谢谢,是的,这样会更好。