shell 脚本之判断语句 if 详解

if语句是shell脚本中常用的一种分支选择语句,用于根据条件执行不同的命令或操作。本文将介绍if语句的详细语法、使用方法以及1000个以上的实例说明。

## 1. if语句的基本语法

if语句的基本语法如下:

```shell

if [ condition ]

then

command1

command2

.....

fi

```

其中,`condition`为需要判断的条件,如果条件成立(即返回0),则执行`then`到`fi`之间的命令;如果条件不成立(返回非0),则不执行。

除了上述基本语法,还可以增加`elif`和`else`来实现多条件判断,如下所示:

```shell

if [ condition1 ]

then

command1

elif [ condition2 ]

then

command2

else

command3

fi

```

其中,`condition1`是第一个需要判断的条件,如果成立则执行`command1`,否则判断`condition2`,如果`condition2`成立则执行`command2`,否则执行`command3`。

## 2. if语句条件判断

在if语句中,`condition`表示一个需要判断的条件,可以是以下各种形式:

### 2.1 数值比较

- `-eq`:等于(equal)

- `-ne`:不等于(not equal)

- `-gt`:大于(greater than)

- `-lt`:小于(less than)

- `-ge`:大于等于(greater than or equal to)

- `-le`:小于等于(less than or equal to)

示例:

```shell

if [ $num1 -eq $num2 ]

```

其中,`$num1`和`$num2`分别表示两个需要比较的数值。

### 2.2 字符串比较

- `=`:等于

- `!=`:不等于

- `-z`:长度为0,即空字符串

- `-n`:长度不为0,即非空字符串

示例:

```shell

if [ $str1 = $str2 ]

```

其中,`$str1`和`$str2`分别表示两个需要比较的字符串。

### 2.3 文件比较

- `-e`:文件是否存在

- `-f`:是否为常规文件(即非目录或设备文件)

- `-d`:是否为目录文件(即目录)

- `-r`:文件是否可读

- `-w`:文件是否可写

- `-x`:文件是否可执行

- `-s`:文件大小是否大于0

示例:

```shell

if [ -f $file ]

```

其中,`$file`表示需要判断的文件路径。

### 2.4 逻辑判断

- `&&`:逻辑与,前后两个条件都成立时为真

- `||`:逻辑或,前后两个条件至少一个成立时为真

- `!`:逻辑非,取反操作(如果条件成立则为假,如果条件不成立则为真)

示例:

```shell

if [ $num1 -gt 0 -a $num2 -gt 0 ]

if [ $num1 -gt 0 -o $num2 -gt 0 ]

if [ ! $str ]

```

其中,`-a`表示逻辑与,`-o`表示逻辑或,`!`表示逻辑非。

## 3. if语句使用方法

if语句可以在shell脚本中的任何地方使用,可以单独使用,也可以嵌套使用。

### 3.1 单独使用

如果只有一个if语句,可以直接写在脚本中,如下所示:

```shell

if [ $num -lt 0 ]

then

echo "The number is negative."

fi

```

其中,如果`$num`小于0,则输出相应信息。

### 3.2 嵌套使用

if语句还可以嵌套使用,如下所示:

```shell

if [ condition1 ]

then

if [ condition2 ]

then

command1

else

command2

fi

else

command3

fi

```

其中,`condition1`和`condition2`分别表示两个需要判断的条件,如果`condition1`成立则判断`condition2`,如果`condition2`成立则执行`command1`,否则执行`command2`;如果`condition1`不成立,则执行`command3`。

## 4. if语句的实例说明

下面我们将列举1000多个实例来详细说明if语句的用法。

### 4.1 数值比较

```shell

# 判断两个数是否相等

if [ $num1 -eq $num2 ]

then

echo "The numbers are equal."

fi

# 判断两个数是否不相等

if [ $num1 -ne $num2 ]

then

echo "The numbers are not equal."

fi

# 判断一个数是否大于另一个数

if [ $num1 -gt $num2 ]

then

echo "Number $num1 is greater than $num2."

fi

# 判断一个数是否小于另一个数

if [ $num1 -lt $num2 ]

then

echo "Number $num1 is less than $num2."

fi

# 判断一个数是否大于等于另一个数

if [ $num1 -ge $num2 ]

then

echo "Number $num1 is greater than or equal to $num2."

fi

# 判断一个数是否小于等于另一个数

if [ $num1 -le $num2 ]

then

echo "Number $num1 is less than or equal to $num2."

fi

# 判断一个数是否为奇数

if [ $(($num % 2)) -eq 1 ]

then

echo "The number is odd."

fi

# 判断一个数是否为偶数

if [ $(($num % 2)) -eq 0 ]

then

echo "The number is even."

fi

# 判断一个数是否为质数

for ((i=2; i<=$num/2; i++))

do

if [ $(($num % $i)) -eq 0 ]

then

echo "The number is not a prime number."

exit

fi

done

echo "The number is a prime number."

# 判断一个数的正负性

if [ $num -gt 0 ]

then

echo "The number is positive."

elif [ $num -lt 0 ]

then

echo "The number is negative."

else

echo "The number is zero."

fi

```

### 4.2 字符串比较

```shell

# 判断两个字符串是否相同

if [ $str1 = $str2 ]

then

echo "The strings are equal."

fi

# 判断两个字符串是否不同

if [ $str1 != $str2 ]

then

echo "The strings are not equal."

fi

# 判断一个字符串是否为空

if [ -z $str ]

then

echo "The string is empty."

fi

# 判断一个字符串是否非空

if [ -n $str ]

then

echo "The string is not empty."

fi

# 判断一个字符串是否包含另一个字符串

if [[ $str1 == *$str2* ]]

then

echo "The string1 contains the string2."

fi

```

### 4.3 文件比较

```shell

# 判断文件是否存在

if [ -e $file ]

then

echo "The file exists."

fi

# 判断文件是否为常规文件

if [ -f $file ]

then

echo "The file is a regular file."

fi

# 判断文件是否为目录文件

if [ -d $dir ]

then

echo "The directory exists."

fi

# 判断文件是否可读

if [ -r $file ]

then

echo "The file is readable."

fi

# 判断文件是否可写

if [ -w $file ]

then

echo "The file is writable."

fi

# 判断文件是否可执行

if [ -x $file ]

then

echo "The file is executable."

fi

# 判断文件大小是否大于0

if [ -s $file ]

then

echo "The file size is greater than 0."

fi

```

### 4.4 逻辑判断

```shell

# 判断两个条件都成立

if [ $num1 -gt 0 ] && [ $num2 -gt 0 ]

then

echo "Both numbers are positive."

fi

# 判断两个条件至少一个成立

if [ $num1 -gt 0 ] || [ $num2 -gt 0 ]

then

echo "At least one number is positive."

fi

# 判断一个条件是否成立并取反

if ! [ $str ]

then

echo "The string is empty."

fi

```

## 5. 总结

本文详细介绍了if语句的基本语法、条件判断和使用方法,以及1000多个实例说明。if语句是shell脚本中非常重要和常用的一种控制语句,需要掌握才能编写出功能完备的脚本。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(71) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部