shell while 循环 错误 ambiguous redirect 及while 循环变量赋值失效问题

shell while 循环 错误 ambiguous redirect 及while 循环变量赋值失效问题

while 循环变量赋值失效问题


heal_info=`gluster volume heal ceshiRep info summary |grep 'Total Number'`   
   echo "$heal_info"| while read line
    do
        numStr=`echo $line|awk -F ":" '{print $2}'`
        echo "numstr:"$numStr
        if [ "$numStr" != " 0" ];then
                echo "plau"
        else
                echo "error"
                let count++
                echo "while count:"$count
        fi
    done

会发现 count 变量 无法自增,原因为 管道符读取问题。

需要修改为重定向读取方式如下:

heal_info=`gluster volume heal ceshiRep info summary |grep 'Total Number'`   
   echo "$heal_info"| while read line # echo $heal_info 会丢失换行符
    do
        numStr=`echo $line|awk -F ":" '{print $2}'`
        echo "numstr:"$numStr
        if [ "$numStr" != " 0" ];then
                echo "plau"
        else
                echo "error"
                let count++
                echo "while count:"$count
        fi
    done < $heal_info

报错: $heal_info ambiguous redirect,
修改为

heal_info=`gluster volume heal ceshiRep info summary |grep 'Total Number'`   
   echo "$heal_info"| while read line # echo $heal_info 会丢失换行符
    do
        numStr=`echo $line|awk -F ":" '{print $2}'`
        echo "numstr:"$numStr
        if [ "$numStr" != " 0" ];then
                echo "plau"
        else
                echo "error"
                let count++
                echo "while count:"$count
        fi
    done <  <(echo "$heal_info") # 注意 两个< 中间要有空格。  

解决count变量自增问题。
参考:
[1]: https://www.linuxquestions.org/questions/linux-software-2/while-loop-bash-arrays-and-multiline-awk-ambiguous-redirect-4175614116/*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值