条件判断是程序中不可或缺的组成部分,程序中往往需要先对某些条件进行判断,再根据判断的结果采取不同的方案。Shell中也有 条件语句,常用的条件语句为: if语句、select语句和case语句 ,着重讲解Shell中条件语句的使用方法。
条件判断
条件判断是条件语句的核心, Shell中通常使用 test 命令或 [命令对条件进行判断,其判断的条件可以是命令或脚本。
test命令的语法格式如下:
若要检测某个文件是否存在,可使用如下语句进行判断:
if test -f file
then
......
判断种类(三类):字符串比较、算术比较、和针对文件的条件测试。
条件 | 说明 |
str1=str2 | 若字符串str1等于str2,则结果为真 |
str1!=str2 | 若字符串str1不等于str2,则结果为真 |
-n str | 若字符串str不为空,则结果为真 |
-z str | 若字符串str为空,则结果为真 |
条件 | 说明 | |
= | expr1 -eq expr2 | 若表达式expr1与expr2返回值相同,则结果为真 |
≠ | expr1 -ne expr2 | 若表达式expr1与expr2返回值不同,则结果为真 |
> | expr1 -gt expr2 | 若表达式expr1返回值大于expr2返回值,则结果为真 |
>= | expr1 -ge expr2 | 若表达式expr1返回值大于等于expr2返回值,则结果为真 |
< | expr1 -lt expr2 | 若表达式expr1返回值小于expr2返回值,则结果为真 |
<= | expr1 -le expr2 | 若表达式expr1返回值小于等于expr2返回值,则结果为真 |
! | !expr | 若表达式结果为假,则结果为 |
条件 | 说明 |
-d file | 若文件file是目录,则结果为真 |
-f file | 若文件file是普通文件,则结果为真 |
-r file | 若文件file可读,则结果为真 |
-w file | 若文件file可写,则结果为真 |
-x file | 若文件file可执行,则结果为真 |
-s file | 若文件file大小不为0,则结果为真 |
-a file | 若文件file存在,则结果为真 |
w e
w
if 条件语法
Shell 中的 if 条件语句分为: 单分支 if 语句、双分支 if 语句和多分支 if 语句,其结构大体与其它程序设计语言的条件语句相同。
单分支的 if 语句 | 双分支的 if 语句 | 多分支的 if 语句 |
if [条件语句]; then |
if [条件语句]; then else ... |
if [条件语句]; then elif [条件语句]; then ... ... else ... |
注意空格 ,如下。
if [ 条件 ]; then if [ 条件 ]
... then ....
fi fi
if test 条件 ;then
...
fi
单分支 if 语句
#!/bin/sh
#单分支if语句
echo "请输入文件或文件夹的名称"
read filename
if [ -d $filename ];then
echo $filename" is a directory"
fi
exit 0
运行结果
多分支 if 语句
#!/bin/sh
#单分支if语句
echo "请输入文件或文件夹的名称"
read filename
if [ -d $filename ];then
echo $filename "是一个文件夹"
else
echo $filename "不是一个文件夹"
fi
exit 0
运行结果