【小白日记32】----Shell之判断

tech2022-08-10  158

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.工具箱

需求:做一个将一些工具统一在一起的窗口

最新回复(0)