Shell脚本语言是我非常推荐大家要去熟练掌握的语言,今天说说Shell的for循环结构,都是我平时的使用经验和习惯。

for循环的语法结构:

  1. for arg in [args] 
  2. do 
  3.  command(s)... 
  4. done  
  5. 或者C语言风格的for循环: 
  6. for((initial arg;loop condition;handle args expression)) 
  7. do 
  8.     command(s)... 
  9. done 

1、循环处理多次任务;比如你在每天的莫一个时间内,每隔1分钟要发送一封检测内存的邮件到某个地址;

  1. for times in `seq 1 10` 
  2. #for((times=0;times <= 10;times++))  这样也可以 
  3. do 
  4.     memory_stat=`free -m` 
  5.     echo "第 $times 次内存检测: $memory_stat" | mail -s 'memory_stat' 6688@ 
  6.     sleep 60 
  7. done 

2、没有 ‘in [arg]’ 时,脚本参数默认为执行脚本时传递的参数,这个特性使得我们多了一种分析和处理脚本参数的方法;

  1. for arg  
  2. do 
  3.     test -n $arg && { 
  4.     #这里是代码块,根据参数做一些事情 
  5.     } 
  6. done 

3、文件匹配,查找;

  1. for erl in *.erl 
  2. for erl in '/src/*.erl' 这里演示如何加目录的写法 
  3. do 
  4.     # 现在每个变量保存的就是一个匹配的到源码文件,接下来的查找替换你都可以做 
  5.     # 所以用shell做一个项目代码的简单全局搜索和替换事件很愉快很轻松的事情 
  6. done 

4、处理文本内容

  1. for field in `cat data.config` 
  2. do 
  3.     # field变量保存的是按照空格分隔的字符串 
  4.     # 接下来可以做很多事情 
  5. done 
  6.  
  7. 我更推荐使用while和read,这样默认域分隔符是换行符 
  8. while read line 
  9. do 
  10.     # 接下来的如匹配,替换,显示,转存的操作由我们自己处理了 
  11. done < 'data.config' 

   上面几种for的用法就是我经常使用的,还有很多灵活应用for循环结构的例子,感兴趣的可以自己去找来试试