在写一个监控脚本中发现问题
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