Shell中的条件判断语句if~then~fi

Shell中的条件判断语句是前面一篇“Shell中的条件测试语句”的升级篇,也就是说,前面的测试语句是为了现在的判断语句if~then~fi语句服务的。

我们还是按照注意点和代码实现的方式铺开:

1)基本的if-then-fi语句可以用来判断基本的单层的分支结构,其形式如下:

其中if后面的测试语句一般都使用[]命令来做。如下面的例子:

#-----------------------------/chapter4/ex4-18.sh------------------
#! /bin/sh
#使用条件测试判断/bin/bash是否是一个常规文件
if [ -f /bin/bash ]; then
	echo "/bin/bash is a file"
fi

2)if-then-else-fi语句可以处理两层的分支判断语句。如下:

#-----------------------------/chapter4/ex4-22.sh------------------
#! /bin/sh

#输出提示信息
echo "Please enter a number:"
#从键盘读取用户输入的数字
read num
#如果用户输入的数字大于10
if [ "$num" -gt 10 ]; then
		#输出大于10的提示信息
 	echo "The number is greater than 10."
#否则
else
	#输出小于或者等于10的提示信息
		echo "The number is equal to or less than 10."
fi

3)if-then-elif-then-elif-then-...-else-fi。这种语句可以实现多重判断,注意最后一定要以一个else结尾。如下:

#-----------------------------/chapter4/ex4-24.sh------------------
#! /bin/sh

echo "Please enter a score:"

read score

if [ -z "$score" ]; then
   echo "You enter nothing.Please enter a score:"
   read score
else
   if [ "$score" -lt 0 -o "$score" -gt 100 ]; then
      echo "The score should be between 0 and 100.Please enter again:"
      read score
   else
      #如果成绩大于90
      if [ "$score" -ge 90 ]; then
         echo "The grade is A."
      #如果成绩大于80且小于90
      elif [ "$score" -ge 80 ]; then
         echo "The grade is B."
      #如果成绩大于70且小于80
      elif [ "$score" -ge 70 ]; then
         echo "The grade is C."
      #如果成绩大于60且小于70
      elif [ "$score" -ge 60 ]; then
         echo "The grade is D."
      #如果成绩小于60
      else
         echo "The grade is E."
      fi
   fi
fi

4)要退出程序的时候,可以使用exit status语句。退出的状态status为0的时候,意味着脚本成功运行结束;非0表示程序执行过程出现某些错误,不同的错误对应着不同的退出状态。尽管用户可以自定义程序中的退出状态status,但是通常情况下每个status都有特定的含义,因此在自定义返回status的时候,一定要避免造成歧义。例子如下:

01   #-----------------------------/chapter4/ex4-26.sh------------------
02   #! /bin/sh
03
04   #如果文件已经存在,则直接退出,文件名时输入的第一个参数
05   if [ -e "$1" ]
06   then
07      echo "file $1 exists."
08      exit 1
09   #如果文件不存在,则创建文件,使用touch来创建文件,也可以使用重定向来创建文件echo "Hello~" > ./test.log  即在当前目录下新建一个test.log文件
10   else
11      touch "$1"
12      echo "file $1 has been created."
13      exit 0
14   fi

5)case-esac语句实现多重条件判断。如下:

注意:每一个变量内容的程序段最后都需要两个分号 (;;) 来代表该程序段落的结束;每个变量情况最后都要有)结尾;其余情况用*)来表示;最后要用esac来结束,即case反过来。

#-----------------------------/chapter4/ex4-27.sh------------------
#! /bin/sh

#输出提示信息
echo "Hit a key,then hit return."
#读取用户按下的键
read keypress
#case语句开始
case "$keypress" in
   #小写字母
   [[:lower:]])
      echo "Lowercase letter.";;
   #大写字母
   [[:upper:]])
      echo "Uppercase letter.";;
   #单个数字
   [0-9])
      echo "Digit.";;
   #其他字符
   *)
      echo "other letter.";;
esac

参考:

《鸟哥的Linux私房菜》

《Shell从入门到精通》

时间: 2024-10-14 07:07:50

Shell中的条件判断语句if~then~fi的相关文章

Shell中的条件测试语句

Shell有条件测试语句,一般用test命令或是[]命令来完成,它们是条件判断语句if~then语句的基础,特别是[]命令.下面我们讲解一些条件测试语句. 1. test命令实现条件测试 对于检测系统中某些文件是否存在,或者相关属性时,test命令很好用. 其基本语法如下: test命令还可以测试字符串: test命令还可以测试整数之间的关系: 2. []命令来实现条件测试 使用中括号[]命令来实现条件测试功能时,要特别注意.因为中括号在很多地方都有用到,比如通配符和正则表达式.而在用[]表示条

linux shell中的条件判断

1. 退出状态 在Linux系统中,每当一条命令执行完成后,系统都会返回一个退出状态,这个状态被存放在$? 这个变量中,是一个整数值,我们可以根据这个值来判断命令运行的结果是否正确. 通常情况下,退出状态值为0,表示执行成功,不为0的时候表示执行失败. POSIX规定的退出状态和退出状态的含义: 0       运行成功 1-255   运行失败,脚本命令.系统命令错误或参数传递错误 126     找到了该命令但无法执行 127     未找到要运行的命令 128     命令被系统强行结束

Bourne Shell中的条件判断

条件判断是一个程序获得智能的基础,而Bourne Shell脚本则通过命令 [ 来模拟大多数编程语言中的条件表达式. shell中支持的控制结构有: (1) if then else fi (2) for in do done (3) while do done 第二种主要用于遍历,可能不需要条件判断,其它两种则免不了和 [ 命令共同使用了.下面讲解这个命令如何模拟条件表达式. 文件/目录判断[ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真.[ -c FILE ] 如果 FI

JavaScript 中if条件判断语句

条件语句 在写代码时,经常会需要基于不同判断执行不同的动作: 您可以在代码中使用条件语句来实现这一点. 在 JavaScript 中,我们可使用如下条件语句:1.使用 if 来规定要执行的代码块,如果指定条件为 true:2.使用 else 来规定要执行的代码块,如果相同的条件为 false:3.使用 else if 来规定要测试的新条件,如果第一个条件为 false:4.使用 switch 来规定多个被执行的备选代码块.  if 语句单分支语句,由一个if组成,如果条件成立,则进入代码开始执行

shell中的条件判断if和测试

(一)条件判断 if 中-z 到 -d 的意思 [ -a file ] 若file存在,则为真. [ -b file ] 若file存在且是一个块特殊文件,则为真. [ -c file ] 若file存在且是一个字特殊文件,则为真. [ -d file ] 若file存在且是一个目录,则为真. [ -e file ] 若file存在,则为真. [ -f file ] 若file存在且是一个普通文件,则为真. [ -g file ] 若file存在且已经设置了SGID,则为真. [ -h file

javascript中对条件判断语句的优化

不管写什么程序,平时都会用到条件语句,如:if...else... switch这样的语句,来达到对条件的判断.下面看来一段代码: function abc(test){ if (test == 1){ console.log('test的值是'+test); } else if (test == 2){ console.log('test的值是'+test); } else if (test == 3){ console.log('test的值是'+test); } else if (test

SQL中的条件判断语句(case when zhen if,ifnull)用法

一.case when then 适用于:sqlserver 和mysql case具有两种格式.简单case函数和case搜索函数.这两种方式,可以实现相同的功能.简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式.还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略. --简单case函数case sex  when '1' then '男'  when '2' then '女’  else '其他' e

shell中的条件判断

read命令 命令的语法: read [参数] 变量名 常用的参数如下: -t timeout 设定超时时间. -p prompt 设定提示信息,该提示信息将会显在光标前. 条件测试: 条件测试可以判断脚本程序运行的状态.它常用于条件分支,以便在不同的运行状态下执行不同的命令. [ param1 判断符号 param2 ] [ 判断符号 param ] 文件状态测试: -b filename 判断文件filename是否为块设备,若文件不存在返回假. -c filename 判断文件filena

条件判断语句(七)

我们之前说过 makefile 是一种脚本语言程序,那么程序便会有相应的语法.在 makefile 中支持条件判断语句,可以根据条件的值来决定 make 的执行,也可以比较两个不同变量或者变量和常量值.需要注意的是:条件判断语句只能用于控制 make 实际执行的语句:但是,不能控制规则中命令的执行过程.格式如下 条件判断语句的语法如下 那么在 makefile 中都有哪些的条件判断关键呢? 关键字 功能 ifeq 判断参数是否相等,相等为 true,否则为 false ifneq 判断参数是否不