### Shell脚本编程之判断语句详解
#### 一、单分支if语句
单分支`if`语句是Shell脚本中最简单的条件控制结构之一,用于根据特定条件执行一段代码。其基本语法如下:
```bash
if 条件表达式; then
# 当条件为真时执行的命令
command1
command2
...
fi
```
其中,`条件表达式`是判断的依据,如果表达式的结果为真(非零或非空),则执行`then`后面的命令。
**示例代码**:
假设我们需要检查一个文件是否存在,并打印相应的消息。
```bash
#!/bin/sh
filename="/path/to/file"
if [ -e "$filename" ]; then
echo "文件存在: $filename"
fi
```
这里使用了`[ -e ]`测试操作符来检查文件是否存在。
#### 二、双分支if语句
双分支`if`语句允许在条件为真时执行一组命令,在条件为假时执行另一组命令。其语法如下:
```bash
if 条件表达式; then
# 当条件为真时执行的命令
command1
command2
...
else
# 当条件为假时执行的命令
commandN
fi
```
这种结构非常灵活,可以根据不同的条件执行不同的操作。
**示例代码**:
假设我们需要根据用户的输入来决定是否执行某个操作。
```bash
#!/bin/sh
read -p "请输入 'yes' 或 'no': " answer
if [ "$answer" = "yes" ]; then
echo "执行操作..."
else
echo "不执行操作。"
fi
```
这里使用了`=`操作符来比较两个字符串是否相等。
#### 三、多分支if语句
多分支`if`语句也被称为`if-elif-else`结构,可以在多个条件下选择执行不同的代码块。其基本语法如下:
```bash
if 条件表达式1; then
# 当条件1为真时执行的命令
command1
elif 条件表达式2; then
# 当条件2为真时执行的命令
command2
elif 条件表达式3; then
# 当条件3为真时执行的命令
command3
else
# 所有条件都不满足时执行的命令
commandN
fi
```
这种结构使得脚本可以根据不同的情况执行不同的逻辑。
**示例代码**:
假设我们需要根据用户输入的数字来决定执行哪个操作。
```bash
#!/bin/sh
read -p "请输入数字 (1-3): " number
if [ "$number" -eq 1 ]; then
echo "执行操作1..."
elif [ "$number" -eq 2 ]; then
echo "执行操作2..."
elif [ "$number" -eq 3 ]; then
echo "执行操作3..."
else
echo "无效的输入!"
fi
```
这里使用了`-eq`操作符来判断两个数值是否相等。
#### 四、case语句
`case`语句是另一种形式的选择结构,用于基于字符串匹配来执行不同的命令。其基本语法如下:
```bash
case 变量 in
PATTERN1)
# 当变量与PATTERN1匹配时执行的命令
command
;;
PATTERN2)
# 当变量与PATTERN2匹配时执行的命令
command
;;
*)
# 当所有模式都不匹配时执行的命令
command
;;
esac
```
**示例代码**:
假设我们需要根据用户的输入来决定执行哪种类型的备份。
```bash
#!/bin/sh
read -p "请选择备份类型 (daily/weekly/monthly): " backup_type
case $backup_type in
daily)
echo "执行每日备份..."
;;
weekly)
echo "执行每周备份..."
;;
monthly)
echo "执行每月备份..."
;;
*)
echo "无效的备份类型!"
;;
esac
```
### 补充shell基本语法
#### 1.1 Shell文件开头
每个Shell脚本文件都必须以指定解释器路径的行开始,例如:
```bash
#!/bin/sh
```
此行告诉系统使用`/bin/sh`来执行此脚本。
要使脚本可执行,可以使用`chmod +x filename`命令。
#### 1.2 注释
在Shell脚本中,以`#`开头的行被视为注释。注释可以帮助理解脚本的工作原理。
#### 1.3 变量
在Shell中,变量通过赋值的方式创建,例如:
```bash
a="hello world"
```
使用变量时需要在变量名前加上美元符号`$`,例如`echo $a`。
#### 1.4 环境变量
通过`export`关键字定义的变量称为环境变量。它们可以在子进程中访问。虽然本文档不深入讨论环境变量的使用,但在实际开发中经常会在登录脚本中设置环境变量来配置用户的环境。
总结,Shell脚本中的条件判断语句是非常重要的工具,用于控制脚本的流程并实现更复杂的逻辑。掌握这些基本的结构对于编写高效和可维护的脚本至关重要。