加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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会消耗更长的输入.)

<(命令)形式称为进程替换.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读