shell-流程控制

条件判断是流程控制语句中很重要的一种表达式,它的作用主要是判断一个表达式是否为真,并把结果返回,供流程控制语句使用。

条件判断

条件判断的基础语法如下:

test condition
[ condition ]

条件判断的运算规则,非空即为真。根据condition比较的值的类型可以分为以下几种情况,每种情况都有不同的运算符进行运算。

判断运算符

判断运算符的两边需要空格,特别是字符串相等比较,因为字符串相等比较的运算符和赋值运算符一样,有很大的概率会写成赋值运算符。

字符串判断

# 等于
test a = Hello

# 不等于
a != hello

数字判断

# 等于 
test a -eq Hello

# 不等于
a -ne hello

# 大于
a -gt 1

# 小于
a -lt 1

# 大于于小于
a -ge 1

# 小于等于
a -le 1

文件权限判断

文件权限判断主要用于权限的控制,比如某个用户想打开文件时,就需要先判断是否具有相应的权限,然后再执行对应的操作。

# 判断是否有读的权限
-r ./hello.sh

# 判断是否有写的权限
-w ./hello.sh

# 判断是否有执行的权限
-x ./hello.sh

文件类型判断

文件类型判断用于判断文件的类型,主要类型有文件夹、文件以及是否存在,这对于文件的读取非常有用

# 文件是否存在
-e ./hello.sh

# 作为文件是否存在
-f ./hello.sh

# 目录是否存在
-d ./hello.sh

逻辑运算符

逻辑运算符与其他高级编程语言的用法一致。

# && 运算符两边的结果为真,整个条件为真
echo hello && 1

# || 运算符两边的结果其中有一个为真,整个条件为真
echo hello || echo world

流程控制

说完条件判断,接下来自然就是流程控制,条件判断是流程控制的组成部分,如果仅仅只是条件判断并没有多大意义。

if 语句

if语句的语法与其他高级编程语言的语法不同,但是语义是一样的,都是当某个条件为真就执行该条件下的代码。

if [ 条件判断 ]
then 
  执行语句
elif [ 条件判断 ]
then
  执行语句
else 
  执行语句
fi

case 语句

case语句的语法与其他高级编程语言的语法有些许差别,但是语义相同,都是当匹配到某个值后,就执行该值下对应的代码。shell的case语句的语法结构和其他高级编程语言的结构很相似,只是符号不同。

case $变量名 in 
"值1")
  执行语句
;;
"值2")
  执行语句
;;
# 相当于其他高级编程语言的default分支
*)
  执行语句
;;
esac

你可能感兴趣的:(shell,linux,运维,服务器,shell)