bash – 用于包含两个变量的循环
发布时间:2020-12-15 21:43:42 所属栏目:安全 来源:网络整理
导读:我对 Bash中的for循环有疑问 我想为特定范围运行awk命令增加34但我不知道如何在for循环中指定两个变量. 我知道如何为一个变量做这个,但它不适用于两个变量. 这是我的一个变量的代码: #!/bin/bashfor a in {1..3400..34}doprintf "awk 'NR=$aNR=$b { if (/^[
我对
Bash中的for循环有疑问
我想为特定范围运行awk命令增加34但我不知道如何在for循环中指定两个变量. 我知道如何为一个变量做这个,但它不适用于两个变量. 这是我的一个变量的代码: #!/bin/bash for a in {1..3400..34} do printf "awk 'NR>=$a&&NR<=$b { if (/^[0-9]/) sum++} END {print "rowt",sum }' file " done 但我想指定两个变量($a,$b),这样的东西不起作用! : for a in {1..3400..34},for b in {35..3400..34} do printf "awk 'NR>=$a&&NR<=$b { if (/^[0-9]/) sum++} END {print "rowt",sum }' hydr_dE.txt && " done 谢谢, 解决方法
(1)如果需要循环两个变量,您可能希望确保它们包含相同数量的数据. echo {1..3400..34}将生成一个值而不是echo {35..3400..34}.
(2)假设两个输入的大小相同,你可以使用while循环: while read a b; do echo ": $a :: $b :"; # do something with a and b here done < <(paste <(seq 1 34 3400) <(seq 35 34 3434)) (你可以使用不同大小的两个输入的循环,但这可能是你不想要的.在上面的例子中,变量a会消耗更长的输入.) <(命令)形式称为进程替换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |