Linux系统Shell编程及自动化运维实现-判断

本文详细介绍了Linux系统中Shell编程的条件测试,包括文件测试、数值比较、字符串比较以及and和or操作符的使用。接着讨论了流程控制中的if结构,包括单分支、双分支、多分支和嵌套结构的应用。此外,还阐述了模式匹配的case语句以及在系统管理中的应用。文章最后进行了关键符号和概念的总结,为Shell脚本编写提供了实用指导。
摘要由CSDN通过智能技术生成

一.shell条件测试

1.1格式

  • 格式1:test 条件表达式
  • 格式2:[ 条件表达式 ]
  • 格式3:[[ 条件表达式 ]]

1.2文件测试[ 操作符 文件或目录 ]

  • 示例
-d : 这是一个目录

[root@localhost ~]# test -d /home
[root@localhost ~]# echo $?
0
[root@localhost ~]# test -d /home11111
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ -d /home ]

注意中括号里的两个空格
  • 操作符种类
-f filename : 当filename 存在时返回真
-b filename : 当filename 存在并且是块文件时返回真(返回0)
-d pathname : 当pathname 存在并且是一个目录时返回真
-h filename : 当filename 存在并且是符号链接文件时返回真 (-L filename)
-u pathname : 当由pathname 指定的文件或目录存在并且设置了SUID 位时返回真
-c filename : 当filename 存在并且是字符文件时返回真
-e pathname : 当由pathname 指定的文件或目录存在时返回真
-g pathname : 当由pathname 指定的文件或目录存在并且设置了SGID 位时返回真
-k pathname : 当由pathname 指定的文件或目录存在并且设置了"粘滞"位时返回真
-p filename : 当filename 存在并且是命名管道时返回真
-r pathname : 当由pathname 指定的文件或目录存在并且可读时返回真
-s filename : 当filename 存在并且文件大小大于0 时返回真
-S filename : 当filename 存在并且是socket 时返回真
-t fd       : 当fd 是与终端设备相关联的文件描述符时返回真
-w pathname : 当由pathname 指定的文件或目录存在并且可写时返回真
-x pathname : 当由pathname 指定的文件或目录存在并且可执行时返回真
-O pathname : 当由pathname 存在并且被当前进程的有效用户id 的用户拥有时返回真(字母O 大写)
-G pathname : 当由pathname 存在并且属于当前进程的有效用户id 的用户的用户组时返回真
file1 -nt file2 : file1 比file2 新时返回真
file1 -ot file2 : file1 比file2 旧时返回真

1.3数值比较[ 整数1 操作符 整数2 ]

  • 操作符
[ 1 -gt 2 ] 大于
[ 1 -lt 2 ] 小于
[ 1 -eq 2 ] 等于
[ 1 -ne 2 ] 不等于
[ 1 -ge 2 ] 大于等于
[ 1 -le 2 ] 小于等于
  • 示例
[root@localhost ~]# vim user.sh
num=$(id -u)
if [   $num  -eq  0   ]
then
echo "administrator"
else
echo "user"
fi
[root@localhost ~]# bash user.sh
[root@localhost ~]# bash 1.sh
administrator
[js@localhost ~]# bash 1.sh
user
  • C语言风格
    在这里插入图片描述
[root@localhost ~]# ((1<2));echo $?
0
[root@localhost ~]# ((1==2));echo $?
1
[root@localhost ~]# ((1>2));echo $?
1
[root@localhost ~]# ((1>=2));echo $?
1
[root@localhost ~]# ((1<=2));echo $?
0
[root@localhost ~]# ((1!=2));echo $?
0
[root@localhost ~]# ((`id -u`>0));echo $?
1
[root@localhost ~]# (($UID==0));echo $?
0

1.4字符串比较[ “字符串” = “字符串” ]

  • =,==,等于
猜测你的用户名是root

[root@localhost ~]# [ "$USER" = "root" ];echo $?
0
[root@localhost ~]# [ "$USER" == "root" ];echo $?
0
  • !=,不等于
[root@localhost ~]# [ "$USER" = "root" ];echo $?
0
[root@localhost ~]# [ "$USER" = "js" ];echo $?
1
[root@localhost ~]# [ "$USER" != "js" ];echo $?
0
  • -z:判断字符长度是为0,-n:判断字符长度不是0
双引号的重要性
定义三个变量,一个有值,一个妹纸,一个没有定义。

[root@localhost ~]# var1=111
[root@localhost ~]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值