在弄清楚循环语句前,先看看字段分隔符的作用。字段分隔符Internal Field Separator, IFS
是shell脚本中的一个重要概念,处理文本数据的时候非常的有用,是把单个数据流划分成不同数据元素的定界符。系统环境默认的IFS是空白字符(换行符、制表符或者空格)。
先验证一下默认的分隔符是空白字符,变量data是一个由空白字符分隔的字符串,用for语句遍历并打印data的每个元素。
1 |
|
执行脚本,其执行结果验证了确实分隔符默认就是空白字符
1 | $ sh test.sh |
分隔符是可以自定义的,不过使用完成后记得恢复为默认的分隔符。
重新自定义界定符为逗号,分割操作后恢复默认界定符。
1 |
|
执行结果和之前的一样
1 | $ sh test.sh |
再扯扯循环语句,参考了《Linux shell 脚本攻略》
这本书,有兴趣可以买来看看,挺不错的。
1、for循环(list可以是字符串和序列)
1 | for var in list |
关于序列怎样生成,可以这样
1 | $ echo {a..z} |
for循环也可以采用C语言中for循环的格式,是不是开始感觉shell的强大了。
1 |
|
2、while循环 一直执行循环,直到给出的条件为假
1 |
|
3、until循环 一直执行循环,直到给出的条件为真
1 |
|
条件condition的分类
1、算术比较 条件通常放在密闭的中括号内。一定要注意在[
或]
与操作数之间有个空格,如果没有则会报错
1 | [ $var -eq 0 ] |
2、文件系统相关测试
1 | [ -f $file_var ] #如果给定的变量包含正常的文件路径或文件名,则返回真 |
3、字符串比较 当用到>
比较运算符时,如果不使用两个嵌套的中括号的话,则脚本在执行时被错误的解析为重定向符,切记!
1 | [[ $str1 = $str2 ]] #当str1等于str2时返回真 |