每种语言都有自己的流程控制,判断语句、循环语句。shell和他们一样,if判断、for、while循环等。
if判断:
if 判断条件
then
commands
else
commands
fi
判断条件:主要判断以下三种情况。test 和[ ]
- 数字比较
- 字符串比较
- 文件比较
我们知道c/c++等语言的if语句if(条件)是条件为真时,才执行下面的语句。但是,shell中条件判断为假(返回值是0),才执行下面语句。这也就是为什么命令可以作为判断条件了,命令执行成功时,返回值为0。我们可以得到任意一个命令的返回值echo $?。在while循环中的条件也是这种的。
虽然对于编写代码,并没有卵用,但是,学习不应该止于表面。。。
for循环:
for var in list
do
commands
done
list是列表。列表是一大串字符串,那么出问题了,for怎么认识每一个变量值呢,这就是环境变量IFS发挥作用的时刻了,IFS默认值是空格,制表符,换行符。。在list列表当中,只要出现上三种符号则划分出变量值。如果我们划分号不是上三种的时候可以自定义IFS值。
例如:读取文本每行字符,对他们处理为:
#!/bin/bash
OLD_IFS=$IFS
IFS="\n"
for line in `cat filename`
do
echo "$line"
done
IFS=$OLD_IFS
for也可以使用类似c语言的结构
例如:for((i=0;i<10;i++))
while循环:
while test command
do
other commands
done
和c一样,其间也可以使用break结束循环,continue直接进行下一次循环。