shell 脚本中循环未能修改循环外变量的问题解决

本文介绍了一个Shell脚本中的变量更新问题:在监控脚本中,由于使用管道导致循环内的变量更改未能生效。通过调整读取方式解决了变量更新问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在写一个监控脚本中发现问题


cur_status="123"
cat status_code | while read code_line
do


http_code=`echo $code_line | awk -F =  '{print $1}'`
http_sub=`echo $code_line | awk -F = '{print $2}'`




if [ $check_status = $http_code ]
then


cur_status=$http_sub
#$cur_status='unkown http_code'


fi


done 
echo $cur_status


发现最后echo出来的 $cur_status 总是123循环中没有改变这个变量,后来经过baidu发现是因为 在while 之前使用的管道影响了值的传递。


修改成



cur_status="123"
 while read code_line
do


http_code=`echo $code_line | awk -F =  '{print $1}'`
http_sub=`echo $code_line | awk -F = '{print $2}'`




if [ $check_status = $http_code ]
then


cur_status=$http_sub
#$cur_status='unkown http_code'


fi


done < status_code
echo $cur_status




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值