`
shicheng
  • 浏览: 165731 次
  • 性别: Icon_minigender_1
  • 来自: 泉州
社区版块
存档分类
最新评论

Shell脚本语法-- if/then/elif/else/fi

阅读更多

和C语言类似,在Shell中用ifthenelifelsefi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

其实是三条命令,if [ -f ~/.bashrc ]是第一条,then . ~/.bashrc是第二条,fi是第三条。如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了,另外,then后面有换行,但这条命令没写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elifelse或者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

分享到:
评论

相关推荐

    【shell】shell脚本语法

    if/then/elif/else/fi -> 各种判断条件以及书写格式,以及&& ||与 -a -o的区别 case/esac -> 就是java 中的switch as,以及在shell底层脚本中的使用 for/do/done -> 几种实用的for循环写法 while/do/done break和...

    Shell编程-流程控制-if语句

    本文将详细介绍如何在Shell脚本中使用`if`语句,包括其语法、注意事项以及通过具体的示例来加深理解。 #### 11.5.1 if语句的基础 `if`语句允许基于一个或多个条件进行决策。如果指定的条件为真,则执行相应的命令...

    linux-shell脚本语言讲义

    流程控制是Shell脚本的核心部分,包括`if...then...else...fi`分支结构,`if...then...elif...then...fi`多条件分支,以及`case`语句。`case`语句可以根据变量的值匹配不同的执行块。 下面是一个简单的菜单驱动的...

    30+个视频+shell脚本视频教程

    - **条件语句**:使用`if`、`elif`、`else`进行条件判断。 - **循环结构**:支持`for`和`while`循环,用于重复执行某段代码。 - **函数**:可以定义函数来封装常用的操作或逻辑。 #### 3. 输入输出重定向 - **标准...

    在Linux的系统Shell脚本中使用if语句的方法.docx

    通过基础的`if`语句、`if-else`语句、`if-elif-else`语句以及多重`if`语句的使用,我们可以灵活地根据不同的条件执行不同的操作,从而使Shell脚本具有更加强大的功能。掌握这些基础控制结构对于编写高效的Shell脚本...

    【shell脚本】shell脚本之条件判断if、for与while循环(shell脚本基础学习二)

    本文将深入探讨Shell脚本中的条件判断(if)、for循环和while循环,这些都是编写有效脚本的基础。 ### 条件判断 `if` `if` 语句在Shell脚本中用于根据特定条件执行不同的命令。以下是一些基本形式: 1. **单分支 ...

    shell脚本编程学习笔记汇总

    shell脚本编程学习笔记汇总 本文档总结了 Linux shell 脚本编程的学习笔记,涵盖了 shell 脚本的定义、编写、权限、存放位置、函数、变量、IF 控制语句、命令退出状态等知识点。 一、shell脚本的定义 shell 脚本是...

    shell脚本编译基础

    通过以上内容的学习,我们可以了解到Shell脚本编写的基本规则、常用方法以及基础语法,这些知识点对于初学者来说是非常重要的。熟练掌握这些内容能够帮助开发者更高效地利用Shell脚本来处理日常任务。

    Shell 脚本的基本结构.docx

    - 使用 `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. **循环**...

    Linux-shell编程05

    `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语句是程序控制流程的关键部分,用于根据特定条件执行不同的操作。在Shell编程中,if else语句与其他高级编程语言(如Java、PHP)有着显著的区别,尤其是在处理空语句和语法结构时。下面将详细...

    shell脚本常见处理场景.pptx #资源分享达人计划 #

    Shell脚本是Linux/Unix系统中广泛使用的自动化任务工具,它允许用户编写一系列命令来执行特定的任务。在本文中,我们将深入探讨shell脚本中的常见处理场景,特别是分支语句和循环语句。 1. **分支语句** - **if ...

    shell脚本的简单应用和实列

    ### Shell脚本的基础应用与实例解析 #### 一、Shell脚本概述 Shell脚本是Linux系统中一种非常实用的工具,它允许用户通过编写一...掌握基础的Shell脚本语法对于Linux用户来说是非常有用的,能够极大地提高工作效率。

    马哥运维推荐的108道Shell脚本面试真题

    Shell脚本是Linux系统管理的重要工具,用于自动化执行一系列命令任务。它们是必需的,因为它们极大地提高了效率,尤其在日常运维工作中。一个Shell脚本是一个包含一系列命令的文本文件,能够按照预设顺序执行这些...

    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...

    Linux Shell语法速查表 用C语言语法来作对比

    - **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...

    Shell脚本学习[全面强大]

    - **条件判断**: `if`、`else`、`elif`用于逻辑判断,如`if [ -f "file" ]; then ... fi`检查文件是否存在。 - **循环**: `for`、`while`、`until`用于循环执行,如`for i in {1..10}; do echo $i; done`打印1到10...

    shell编程入门教程+shell脚本专家指南+UNIX.shell编程24小时教程.rar

    本文将深入探讨Shell编程的基础知识,包括基本语法、常用的内置命令、条件语句、循环结构以及函数的使用,旨在帮助初学者快速入门,并逐步提升为Shell脚本专家。 首先,让我们了解什么是Shell。Shell是操作系统提供...

    shell脚本编程基础

    2. **条件语句**:`if`、`else`和`elif`用于基于不同条件执行不同的命令,例如`if [ -f "file.txt" ]; then ... fi`检查文件是否存在。 3. **循环结构**:`for`和`while`循环是bash中的常见控制流,例如`for i in {...

    shell 脚本基础知识

    在shell脚本中,`if` 语句是最基本的控制结构之一,用于根据不同的条件执行相应的代码块。它支持多种语法形式,可以灵活地处理复杂的逻辑判断。 **基本语法格式:** ```bash if 条件表达式 then # 如果条件为真,...

Global site tag (gtag.js) - Google Analytics