bash 循环中变量作用范围的问题分析
先来看一段错误的代码。
#!/bin/bash
for x in `ls */.*/.*`
cat $x|do echo $x
while read line
do
c=`echo $line|awk -F'(' '{print $1}'`
#echo $c
i=$((i+$c))
done
echo
done
echo $i
以上代码有什么问题呢?
cat之后的管道会使i的值没有被加1。
正确的方法:
#!/bin/bash
for x in `ls */.*/.*`
do echo $x
while read line
do
c=`echo $line|awk -F'(' '{print $1}'`
#echo $c
i=$((i+$c))
done<$x
echo
done
echo $i
一个shell写的ping函数
#!/bin/bash#2013-01-0614:00:00wanggyexp#note:pingmonitorset-u#set-xping_fun(){d_network=192.168.1echo-n"inputthenetwork(default$d_network):"readnetwork:${network:=$d_network}echo"network:$network"d_ho
一个可交互的并发ping检测脚本
#!/bin/bash#********************************##2013-01-1117:00:00wanggyexp##note:pingmonitor##********************************#set-uping_fun(){d_network=192.168.1echo-n"inputthenetwork(default$d_networ
并发数据库压力测试的shell脚本代码
#!/bin/bash#********************************##并发后台运行fun##forwanggy2012-01-25##note:##fun_numfun函数后台运行次数##sql_num每个函数sql运行次数##*******************************