我有一个从bash脚本执行的程序
mydata=$(myprogram etc)
提供如下数据:
echo $mydata
foo1
bar1
foo2
bar2
...
foo_n
bar_n
我想迭代$mydata
传递到另一个命令:
another_command foo1 bar1
问题:如何使用bash执行此操作?问题2:以另一种方式提供数据会大大简化事情吗?例如,如果数据如下所示:
foo1 bar1 foo2 bar2 ... foo_n bar_n
答案 0 :(得分:5)
您可以使用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
使用默认选项无关紧要
答案 1 :(得分:2)
您可以使用此脚本:
while read a; read b; do
another_command "$a" "$b"
done < file
答案 2 :(得分:2)
您可以使用数组
声明数组
declare -a mydata
然后将输出保存到数组,在 ( 和 )
之间运行命令mydata=( $(echo -e "f1\nb1\nf2\nb2") )
^ ^
和
for (( i=0;$i<${#mydata[*]};i+=2 ))
do
echo ${mydata[$i]}" "${mydata[$i+1]}
done