Shell之判断
一、Shell条件测试1.条件表达式格式2.文件测试3.数字比较4.字符串比较
二、流程控制 If1.单分支语句2.双分支语句3.多分支结构4.嵌套结构
三、流程控制case1.简单的模式匹配2.登录跳板主机3.工具箱
一、Shell条件测试
1.条件表达式格式
test 条件表达式[ 条件表达式 ][ 条件表达式 ]]
2.文件测试
[ 操作符 文件或目录
]
符号解释
!结果取反-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 指定的文件或目录存在时bvdff返回真-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 file2file1 比file2 新时返回真file1 -ot file2file1 比file2 旧时返回真
3.数字比较
[ 整数
1 操作符 整数
2 ]
中括号与数值字符之间一定要加空格
符号含义
[ 1 -gt 10 ]大于[ 1 -lt 10 ]小于[ 1 -eq 10 ]等于[ 1 -ne 10 ]不等于[ 1 -ge 10 ]大于等于[ 1 -le 10 ]小于等于
一般不会让我们单独使用,配合上一命令返回值 ==$?==使用较多
4.字符串比较
[ "字符串" = "字符串" ]
二、流程控制 If
1.单分支语句
需求:编写脚本,由用户输入用户名,如果用户不存在,则创建该用户,并设置密码为123456
2.双分支语句
需求:编写脚本,由用户输入用户名,如果用户不存在,则创建该用户,并设置密码为123456;否则,提示用户已经存在 需求:编写脚本,由用户输入用户名,判断该用户的uid及gid,如果相同,则显示Good user; 否则显示Bad user.
3.多分支结构
4.嵌套结构
三、流程控制case
1.简单的模式匹配
案例1:在用户来看车的时候询问[Y/N] 然后询问用户年龄 是否成年
2.登录跳板主机
案例2:简单的JumpServer
3.工具箱
需求:做一个将一些工具统一在一起的窗口