文章目录
- shell编程第四天(判断)
- shell条件测试
- 数值比较
- 文件测试
- 字符串比较
- and和or
- 流程控制
shell编程第四天(判断)
无论是什么编程语言都离不开条件判断,shell编程也是一样的,也就是流程控制。
shell条件测试
数值比较
格式:[数值1 操作符 数值2]
,也就是大于,小于,大于等于,小于等于
数学中通常使用的是> <
来进行表示,但是在shell中,已经将这些符号赋予了特殊的含义:输出重定向和输入重定向
在shell中使用的以下的字符进行表示:
-gt大于
-lt小于
-eq等于
-ne不等于
-ge大于等于
-le小于等于
编写一个脚本测试用户输入的密码长度,是否满足长度的需求
变量的长度用${#变量名称}
来进行表示
pass=123;echo ${#pass}
测试的语法:
test 条件表达式
[条件表达式]
[[条件表达式]]
#!/bin/bash
read -p "请输入您的密码:" password
test ${#password} -ge 7;echo $? $> /dev/null
保存退出,执行文件
文件测试
- 格式
[操作符 文件或者是目录]
- 操作符
详情操作符访问这里 - 请用户输入备份的路径
如果存在提示已经存在可以备份,如果不存在提示目录不存在请创建目录
vim path.sh
#!/bin/bash
read -p "请输入您的需要备份的目录:" dir1
if test -d $dir1
then
echo "$dir1存在,可以备份"
else
echo "$dir1不存在,无法备份"
touch /"$dir1"
echo "$dir1已经创建了"
fi
保存退出
字符串比较
- 格式
["字符串"操作符"字符串"]
- 操作符
=等于
!=不等于(!)
-z判断字符长度是为0
-n判断字符长度不是为0
vi select.sh
#!/bin/bash
read -p "您确定要升级这件装备吗?[yes/no]" select
if [ "$select" = "yes" ]
then
echo "装备升级开始"
else
echo "欢迎下次光临"
fi
and和or
- 当条件测试比较复杂时,需要多个条件同时成立,就需要混合条件测试了,这就需要用到and和or
&& 逻辑中的AND的意思-a,两个条件同时成立为真
|| 逻辑中or的意思-o,两个条件有一个成立为真
- 练习
要求用户输入密码,长度大于等于7位,包含字母的大写,包含字母的小写,包含符号中的“@*¥”等符号
vim pass.sh
#!/bin/bash
read -p "请您输入密码:" pass
if [ ${#pass} -gt 7 ] && [[ ${pass} =~ [a-z] ]] && [[ ${pass} =~ [A-Z] ]] && [[ ${pass} =~ @%^* ]]
then
echo "您的密码足够复杂"
else
echo "您的密码太简单了"
fi
保存退出执行文件
流程控制
流程控制需要认识的是if then else fi
if 如果 条件成立
then 那么 完成指令1..... 条件成立
else 否则 完成指令2..... 条件不成立
fi 结束
#!/bin/bash
read -p "请输入您的密码:" ps
if [ ${#ps} -lt 7 ]
then
echo "您的密码太短了"
else
echo "您的密码足够长"
fi