if条件语句
Shell中的if条件语句分为:单分支if语句、双分支if语句和多分支if语句,其结构大体与其它程序设计语言的条件语句,下面我们将通过案例逐个讲解它们的用法。
1、 单分支if语句
单分支if语句是最简单的条件语句,它对某个条件判断语句的结果进行测试,根据测试的结果选择要执行的语句。单分支if语句的格式如下:
if [条件判断语句]; then
…
fi
其中的关键字为:if、then和fi,fi表示该语句到此结束。
案例2:输入文件名,判断文件是否为目录,若是,则输出“[文件名]是个目录”。
1 #!/bin/sh
2 #单分支if语句
3 read filename
4 if [ -d $filename ];then
5 echo $filename" is a directory"
6 fi
7 exit 0
案例2代码第二行中的“read filename”的作用为:使用read命令读取一个文件名,并将该文件名保存到变量filename中。
执行脚本,输入目录名“Videos”,该案例的执行结果如下:
Videos
Videos is a directory
2、 双分支if语句
双分支if语句类似于C语言中的“if…else…”语句,其格式如下:
if [条件判断语句]; then
…
else
…
fi
其中的关键字为:if、then、else和fi。
案例3:输入文件名,判断文件是否为目录,若是,则输出“[文件名]是个目录”;否则输出“[文件名]不是目录”。
1 #!/bin/sh
2 #双分支if语句
3 read filename
4 if [ -d $filename ];then
5 echo $filename" is a directory"
6 else
7 echo $filename" is't a directory"
8 fi
9 exit 0
执行脚本,输入文件名“hello”,案例3的输出结果如下:
hello
hello is't a directory
3、 多分支if语句
多分支if语句中可以出现不止一个的条件判断,其格式如下:
if [条件判断语句];then
…
elif [条件判断语句]; then
…
…
else
…
fi
多分支if语句中的关键字为:if、then、elif、else和fi,其中elif相当于其它编程语言中的“elif if”。
案例4:判断一个文件是否为目录,若是,输出目录中的文件;若不是,判断该文件是否可执行,若能执行,输出:“这是一个可执行文件”;否则输出“该文件不可执行”。
1 #!/bin/sh
2 read filename
3 if [ -d $filename ];then
4 ls $filename
5 elif [ -x $filename ];then
6 echo "This is a executable file."
7 else
8 echo "This is not a executable file."
9 fi
10 exit 0
执行脚本,并输入不同内容测试脚本执行结果,输入项及输出结果分别如下。
① 输入目录“./”,输出结果如下:
./
a a.out Documents _fc_add.c hello.i let Public test
a.c a.txt Downloads first hello.s loca second.c var
…
② 输入可执行文件hello,输出结果如下:
hello
This is a executable file.
③ 输入不可执行的文件file,其输出结果如下:
file
This is't a executable file.