Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
成对数据上的bash迭代_Bash_Loops - Fatal编程技术网

成对数据上的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

我用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 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:谢谢,是的,这样会更好。