>我有一个从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
您可以使用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
然后将输出保存到数组,在 ( 和 ) 之间运行命令
mydata=( $(echo -e "f1nb1nf2nb2") )
^ ^
和
for (( i=0;$i<${#mydata[*]};i+=2 ))
do
echo ${mydata[$i]}" "${mydata[$i+1]}
done
您可以使用此脚本:
while read a; read b; do
another_command "$a" "$b"
done < file