Bash 我如何“;读取”;while循环中的多个变量
如何使用while read行读取多个变量?我正在尝试从这些多行变量创建一个csv文件 不确定这是否是最好的方法 例如:Bash 我如何“;读取”;while循环中的多个变量,bash,variables,while-loop,Bash,Variables,While Loop,如何使用while read行读取多个变量?我正在尝试从这些多行变量创建一个csv文件 不确定这是否是最好的方法 例如: 1st_list=$(..code..) 2nd_list=$(..code..) while read line_from_1, line_from_2 do echo "$line_from_1,$line_from_2" >> outputfile.csv done < $1st_list,$2nd_list 1st_list=$(…co
1st_list=$(..code..)
2nd_list=$(..code..)
while read line_from_1, line_from_2
do
echo "$line_from_1,$line_from_2" >> outputfile.csv
done < $1st_list,$2nd_list
1st_list=$(…code.)
第二个列表=$(…代码..)
从_1读取第_行,从_2读取第_行
做
echo“$line\u来自\u 1,$line\u来自\u 2”>>outputfile.csv
完成<$1st\u列表,$2nd\u列表
您的问题有点不清楚,但为了并行读取多个源,您需要使用多个文件描述符,我认为还需要使用过程替换
while read line_from_1;
read -u 3 line_from_2; do
echo "From first: $line_from_1"
echo "From second: $line_from_2"
done < <( echo "$first_list" ) 3< <(echo "$second_list")
)
如前所述,只要第二次读取成功,循环就会成功(忽略第一次读取的退出状态)。要循环,只要两者都成功,请使用从\u 1读取行\u和从\u 2读取-u 3行\u
要循环,只要其中一个成功,您将需要一个稍微复杂一点的小脚本作为while
条件:
while read line_from_1; read1=$?;
read line_from_2; read2=$?;
(( read1 == 0 || read2 == 0 )); do
更新:如果已经设置了变量来代替流程替换,那么也可以简单地在此处使用字符串。(我不确定您的问题是否有点不清楚,但为了并行地读取多个源,您需要使用多个文件描述符,我认为还需要处理替换
while read line_from_1;
read -u 3 line_from_2; do
echo "From first: $line_from_1"
echo "From second: $line_from_2"
done < <( echo "$first_list" ) 3< <(echo "$second_list")
)
如前所述,只要第二次读取成功,循环就会成功(忽略第一次读取的退出状态)。要循环,只要两者都成功,请使用从\u 1读取行\u和从\u 2读取-u 3行\u
要循环,只要其中一个成功,您将需要一个稍微复杂一点的小脚本作为while
条件:
while read line_from_1; read1=$?;
read line_from_2; read2=$?;
(( read1 == 0 || read2 == 0 )); do
更新:如果已经设置了变量来代替流程替换,那么也可以简单地在此处使用字符串。(我不确定是否
3假设您想要作为输出
file1line1,file2line1
file2line2,file2line2
etc.
那么你根本不需要这样的东西,因为粘贴就是这样做的
paste -d, <(echo "$first_list") <(echo "$second_list")
粘贴-d,假设您想要作为输出
file1line1,file2line1
file2line2,file2line2
etc.
那么你根本不需要这样的东西,因为粘贴就是这样做的
paste -d, <(echo "$first_list") <(echo "$second_list")
paste-d,$1st_list
和$2nd_list
中的示例值是什么?@anubhava$1st_list和$2nd_list是多行脚本变量。我正在尝试使用这些变量创建csv文件。不确定这是否是最好的方法。我将更新该问题。您有两组行要梳理line具体是什么?line1,line2
?`line1field1,line2field1,l1f2,l2f2,…。?将>outputfile.csv
从echo
移动到>outputfile.csv
完成后的输出文件,这样只打开一次,而不是重新打开(然后关闭)每次你想写一行。在$1st_list
和$2nd_list
中的示例值是什么?@anubhava$1st_list和$2nd_list是多行脚本变量。我正在尝试用这些变量创建一个csv文件。不确定这是否是最好的方法。我将更新这个问题。你有两行您试图如何准确组合?line1,line2
?`line1field1,line2field1,l1f2,l2f2,…。?将>outputfile.csv
从echo
移动到>outputfile.csv
完成后的>,这样您只打开一次输出文件,而不是重新打开(然后关闭它)每次你想写一行。当$first\u list
被清空时,这会失败。是的;当一个或另一个列表先被耗尽,并且OP在问题中没有提到所需的行为是什么时,有多种方法可以处理。当然,最好是替换echo“$first\u list”
和echo“$second_列表"
使用实际生成它们的代码;这样内容就不需要存储在内存中。@CharlesDuffy我会更明确地说明这一点。另外,POSIX从标准输入以外的内容读取数据的方法是使用读取行\u from\u 2,当$first\u list
为空时,该方法会失败。是的;有多种方法可以处理w当一个或另一个列表首先用尽,而OP在问题中没有提到所需的行为是什么时。当然,最好替换echo“$first\u list”
和echo“$second\u list”
使用实际生成它们的代码;这样内容就不需要存储在内存中。@CharlesDuffy我会更明确地说明这一点。另外,POSIX读取标准输入以外的内容的方法是使用读取行\u from\u 2