持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
Hi~,我是一碗周,如果写的文章有幸可以得到你的青睐,万分有幸~
🍇 写在前面
先来介绍一下新开的这个专栏:《前端&运维那点事儿》将会从前端的角度,依次学习Linux→Nginx→Docker→持续集成→k8s,从而打造一个属于站在前端角度的运维专栏。
在这篇文章中我们将来学习一下Shell中的条件判断、if
语句以及case
语句,在介绍完基础语法后,都会携带一个简单的小例子。
🥭 条件判断
Shell中的条件判断可以通过test
命令或者[ 表达式 ]
实现,两种方式的最终效果是相同的,不过需要注意的是使用第二种时中括号的两边的空格是不能少的。
🍍 判断文件类型
通过一些选项可以判断文件类型,如下表所示:
选项 | 含义 |
---|---|
-d | 文件是否存在并且是目录 |
-e | 文件是否存在 |
-f | 文件是否存在并且是普通文件 |
-b | 文件是否存在并且是块设备文件 |
-c | 文件是否存在并且是字符设备文件 |
-L | 文件是否存在并且是链接文件 |
-p | 文件是否存在并且是管道文件 |
-s | 文件是否存在并且是否为非空 |
-S | 文件是否存在并且是套接字文件 |
如下示例判断了文件是否存在,并输出true和false:
[root@ywanzhou ~]$ [ -e install.sh ] && echo "true" || echo "false"
true
[root@ywanzhou ~]$ [ -e install.ssh ] && echo "true" || echo "false"
false
🍌 判断文件权限
shell中提供的判断文件权限选项如下:
选项 | 含义 |
---|---|
-r | 文件是否存在,并且是否拥有读权限 |
-w | 文件是否存在,并且是否拥有写权限 |
-x | 文件是否存在,并且是否拥有执行权限 |
例子如下:
[root@ywanzhou ~]$ [ -r install.sh ] && echo "true" || echo "false" # 判断文件具有写权限
true
🍋 判断数值
在Shell判断两个数值是否相等或者大于还是小于采用的也是一项选项,具体如下:
选项 | 含义 |
---|---|
整数1 -eq 整数2 | 判断整数1是否和整数2相等 |
整数1 -ne 整数2 | 判断整数1是否和整数2不相等 |
整数1 -gt 整数2 | 判断整数1是否大于整数2 |
整数1 -lt 整数2 | 判断整数1是否小于整数2 |
整数1 -ge 整数2 | 判断整数1是否大于等于整数2 |
整数1 -le 整数2 | 判断整数1是否小于等于整数2 |
示例如下:
[root@ywanzhou ~]$ [ 1 -eq 1 ] && echo 'true' || echo 'false' # 判断1是否等于1
true
[root@ywanzhou ~]$ [ 1 -eq 2 ] && echo 'true' || echo 'false' # 判断1是否等于2
false
🍊 字符串判断
判断字符串的选择如下:
选项 | 含义 |
---|---|
-z 字符串 | 判断字否串是否为空 |
-n 字符中 | 判断字符串是否为非空 |
字符串1 == 字符串2 | 判断字符串1是否和字符串2相等 |
字符串1 != 字符串2 | 判断字符串1是否和字符串2不相等 |
示例如下:
[root@ywanzhou ~]$ [ y == yiwanzhou ] && echo 'true' || echo 'false'
false
[root@ywanzhou ~]$ [ y == y ] && echo 'true' || echo 'false'
true
[root@ywanzhou ~]$ [ y != yiwanzhou ] && echo 'true' || echo 'false'
true
🍉 多重判断
正则中也支持且、或、非的操作,其选项如下:
选项 | 含义 |
---|---|
判断1 -a 判断2 | 逻辑与 |
判断1 -o 判断2 | 逻辑或 |
!判断 | 逻辑非 |
示例如下:
[root@ywanzhou ~]$ [ y == y -a z == z ] && echo 'true' || echo 'false'
true
🍈 if语句
讲真的,shell中的if语句真的很诡异,它的语法如下:
# 单一if语句
if condition
then
statement1
fi
# if else 语句
if condition
then
statement1
else
statement2
fi
# if elif else 语句
if condition1
then
statement1
elif condition2
then
statement2
elif condition3
then
statement3
……
else
statementn
fi
下面几个理解展示了if语句的用法:
-
判断当前用户是否为root用户:
#!/bin/bash user=$(whoami) if [ "$user" == root ] then echo 'root' else echo 'not root' fi
-
判断输入的内容是否为目录:
#!/bin/bash read -t 10 -p '请输入文件目录' dir if [ -d "$dir" ];then echo '当前是一个目录' fi
then
可以不用换行,只需要在条件后面增加一个分号即可。 -
用户输入成绩,输出成绩的状态:
#!/bin/bash read -p "请输入成绩:" score if (( $score >= 95 )); then echo "优秀" elif (( $score >= 80 && $score < 95 )); then echo "良好" elif (( $score >= 60 && $score < 80 )); then echo "及格" else echo "不及格" fi
上述代码中的条件判断在shell中也是支持的
🍇 写在最后
本篇文章到这就结束了,这篇文章中介绍了Shell中的条件判断,还介绍了三种if语句以及if语句的两种格式。
如果对本篇文章对你有所帮助,可以点赞收藏评论支持一下我;如果有所疑问,欢迎私信~
如果对这个专栏感兴趣可以点一个关注呦~