和C语言类似,在Shell中用if
、then
、elif
、else
、fi
这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
其实是三条命令,if [ -f ~/.bashrc ]
是第一条,then . ~/.bashrc
是第二条,fi
是第三条。如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了,另外,then
后面有换行,但这条命令没写完,Shell会自动续行,把下一行接在then
后面当作一条命令处理。和[
命令一样,要注意命令和各参数之间必须用空格隔开。if
命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then
后面的子命令,如果Exit Status非0(表示假),则执行elif
、else
或者fi
后面的子命令。if
后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi
表示if
语句块的结束。见下例:
#! /bin/sh
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
if :; then echo "always true"; fi
:
是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。此外,也可以执行/bin/true
或/bin/false
得到真或假的Exit Status。再看一个例子:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
if [ "$YES_OR_NO" = "yes" ]; then
echo "Good morning!"
elif [ "$YES_OR_NO" = "no" ]; then
echo "Good afternoon!"
else
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1
fi
exit 0
上例中的read
命令的作用是等待用户输入一行字符串,将该字符串存到一个Shell变量中。
此外,Shell还提供了&&和||语法,和C语言类似,具有Short-circuit特性,很多Shell脚本喜欢写成这样:
test "$(whoami)" != 'root' && (echo you are using a non-privileged account; exit 1)
&&相当于“if...then...”,而||相当于“if not...then...”。&&和||用于连接两个命令,而上面讲的-a
和-o
仅用于在测试表达式中连接两个测试条件,要注意它们的区别,例如,
test "$VAR" -gt 1 -a "$VAR" -lt 3
和以下写法是等价的
test "$VAR" -gt 1 && test "$VAR" -lt 3
分享到:
相关推荐
if/then/elif/else/fi -> 各种判断条件以及书写格式,以及&& ||与 -a -o的区别 case/esac -> 就是java 中的switch as,以及在shell底层脚本中的使用 for/do/done -> 几种实用的for循环写法 while/do/done break和...
本文将详细介绍如何在Shell脚本中使用`if`语句,包括其语法、注意事项以及通过具体的示例来加深理解。 #### 11.5.1 if语句的基础 `if`语句允许基于一个或多个条件进行决策。如果指定的条件为真,则执行相应的命令...
流程控制是Shell脚本的核心部分,包括`if...then...else...fi`分支结构,`if...then...elif...then...fi`多条件分支,以及`case`语句。`case`语句可以根据变量的值匹配不同的执行块。 下面是一个简单的菜单驱动的...
- **条件语句**:使用`if`、`elif`、`else`进行条件判断。 - **循环结构**:支持`for`和`while`循环,用于重复执行某段代码。 - **函数**:可以定义函数来封装常用的操作或逻辑。 #### 3. 输入输出重定向 - **标准...
通过基础的`if`语句、`if-else`语句、`if-elif-else`语句以及多重`if`语句的使用,我们可以灵活地根据不同的条件执行不同的操作,从而使Shell脚本具有更加强大的功能。掌握这些基础控制结构对于编写高效的Shell脚本...
本文将深入探讨Shell脚本中的条件判断(if)、for循环和while循环,这些都是编写有效脚本的基础。 ### 条件判断 `if` `if` 语句在Shell脚本中用于根据特定条件执行不同的命令。以下是一些基本形式: 1. **单分支 ...
shell脚本编程学习笔记汇总 本文档总结了 Linux shell 脚本编程的学习笔记,涵盖了 shell 脚本的定义、编写、权限、存放位置、函数、变量、IF 控制语句、命令退出状态等知识点。 一、shell脚本的定义 shell 脚本是...
通过以上内容的学习,我们可以了解到Shell脚本编写的基本规则、常用方法以及基础语法,这些知识点对于初学者来说是非常重要的。熟练掌握这些内容能够帮助开发者更高效地利用Shell脚本来处理日常任务。
- 使用 `if`、`elif`、`else` 和 `fi` 进行条件判断。 示例: ```bash if [ $a -eq $b ]; then echo "a 等于 b" elif [ $a -gt $b ]; then echo "a 大于 b" else echo "a 小于 b" fi ``` 3. **循环**...
`if-then-elif-else`语句进一步扩展了逻辑选择,允许更多的条件分支。`elif`用于添加额外的检查: ```bash if command1 then commands elif command2 then more_commands else fallback_commands fi ``` 这样,...
Shell脚本中的if else语句是程序控制流程的关键部分,用于根据特定条件执行不同的操作。在Shell编程中,if else语句与其他高级编程语言(如Java、PHP)有着显著的区别,尤其是在处理空语句和语法结构时。下面将详细...
Shell脚本是Linux/Unix系统中广泛使用的自动化任务工具,它允许用户编写一系列命令来执行特定的任务。在本文中,我们将深入探讨shell脚本中的常见处理场景,特别是分支语句和循环语句。 1. **分支语句** - **if ...
### Shell脚本的基础应用与实例解析 #### 一、Shell脚本概述 Shell脚本是Linux系统中一种非常实用的工具,它允许用户通过编写一...掌握基础的Shell脚本语法对于Linux用户来说是非常有用的,能够极大地提高工作效率。
Shell脚本是Linux系统管理的重要工具,用于自动化执行一系列命令任务。它们是必需的,因为它们极大地提高了效率,尤其在日常运维工作中。一个Shell脚本是一个包含一系列命令的文本文件,能够按照预设顺序执行这些...
条件语句如`if`、`if-else`和`if-elif-else`用于基于特定条件执行代码块。例如: ```bash if [ -f "file.txt" ]; then echo "File exists." else echo "File not found." fi ``` 循环结构有`for`、`while`和`until...
- **Shell脚本**: 使用`if...then...elif...else`和`case`语句实现类似的逻辑。 ```sh if [ isOK ]; then #1 elif [ isOK2 ]; then #2 else #3 fi case $D in 1) echo "select1";; 2|3) echo "select2or3...
- **条件判断**: `if`、`else`、`elif`用于逻辑判断,如`if [ -f "file" ]; then ... fi`检查文件是否存在。 - **循环**: `for`、`while`、`until`用于循环执行,如`for i in {1..10}; do echo $i; done`打印1到10...
本文将深入探讨Shell编程的基础知识,包括基本语法、常用的内置命令、条件语句、循环结构以及函数的使用,旨在帮助初学者快速入门,并逐步提升为Shell脚本专家。 首先,让我们了解什么是Shell。Shell是操作系统提供...
2. **条件语句**:`if`、`else`和`elif`用于基于不同条件执行不同的命令,例如`if [ -f "file.txt" ]; then ... fi`检查文件是否存在。 3. **循环结构**:`for`和`while`循环是bash中的常见控制流,例如`for i in {...
在shell脚本中,`if` 语句是最基本的控制结构之一,用于根据不同的条件执行相应的代码块。它支持多种语法形式,可以灵活地处理复杂的逻辑判断。 **基本语法格式:** ```bash if 条件表达式 then # 如果条件为真,...