Shell脚本语言是我非常推荐大家要去熟练掌握的语言,今天说说Shell的for循环结构,都是我平时的使用经验和习惯。
for循环的语法结构:
- for arg in [args]
- do
- command(s)...
- done
- 或者C语言风格的for循环:
- for((initial arg;loop condition;handle args expression))
- do
- command(s)...
- done
1、循环处理多次任务;比如你在每天的莫一个时间内,每隔1分钟要发送一封检测内存的邮件到某个地址;
- for times in `seq 1 10`
- #for((times=0;times <= 10;times++)) 这样也可以
- do
- memory_stat=`free -m`
- echo "第 $times 次内存检测: $memory_stat" | mail -s 'memory_stat' 6688@
- sleep 60
- done
2、没有 ‘in [arg]’ 时,脚本参数默认为执行脚本时传递的参数,这个特性使得我们多了一种分析和处理脚本参数的方法;
- for arg
- do
- test -n $arg && {
- #这里是代码块,根据参数做一些事情
- }
- done
3、文件匹配,查找;
- for erl in *.erl
- # for erl in '/src/*.erl' 这里演示如何加目录的写法
- do
- # 现在每个变量保存的就是一个匹配的到源码文件,接下来的查找替换你都可以做
- # 所以用shell做一个项目代码的简单全局搜索和替换事件很愉快很轻松的事情
- done
4、处理文本内容
- for field in `cat data.config`
- do
- # field变量保存的是按照空格分隔的字符串
- # 接下来可以做很多事情
- done
- 我更推荐使用while和read,这样默认域分隔符是换行符
- while read line
- do
- # 接下来的如匹配,替换,显示,转存的操作由我们自己处理了
- done < 'data.config'