学科分类
目录
Linux编程

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 [条件判断语句]; thenelsefi

其中的关键字为: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 [条件判断语句];thenelif [条件判断语句]; then
  …
…
elsefi

多分支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.
点击此处
隐藏目录