首页 > 系统相关 >shell编程第四天(判断)

shell编程第四天(判断)

时间:2023-05-18 12:02:07浏览次数:39  
标签:dir1 shell 编程 echo 密码 第四天 pass else



文章目录

  • 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


标签:dir1,shell,编程,echo,密码,第四天,pass,else
From: https://blog.51cto.com/u_15016660/6296657

相关文章

  • Java 会是首选的最佳编程语言吗?
    Java是一种非常流行的编程语言,具有广泛的应用领域和强大的生态系统。它被广泛用于企业级应用程序开发、移动应用程序开发、Web应用程序开发、游戏开发等领域。Java的优点包括跨平台性、面向对象、可靠性高、安全性好、易于学习和使用等。因此,在很多情况下,Java是首选的最佳编程......
  • 编程打卡:C语言程序设计
    classmiband(Peripheral):_send_rnd_cmd=struct.pack('<2s',b'\x02\x00')_send_enc_key=struct.pack('<2s',b'\x03\x00')def__init__(self,mac_address,key=None,timeout=0.5,debug=False):......
  • 【hadoop】 4001-Partitioner编程
    MapReduce重要组件——Partitioner组件(1)Partitioner组件可以让Map对Key进行分区,从而可以根据不同的key来分发到不同的reduce中去处理;(2)你可以自定义key的一个分发股则,如数据文件包含不同的省份,而输出的要求是每个省份输出一个文件;(3)提供了一个默认的HashPartitioner......
  • 第四周编程作业(一)-Building your Deep Neural Network: Step by Step
    BuildingyourDeepNeuralNetwork:StepbyStepWelcometoyourweek4assignment(part1of2)!Youhavepreviouslytraineda2-layerNeuralNetwork(withasinglehiddenlayer).Thisweek,youwillbuildadeepneuralnetwork,withasmanylayersasyou......
  • shell补遗_一个巨简单的保证服务存活的脚本
    Shell补遗背景公司一台机器总是会在没有更新补丁的情况下启动失败.查看所有的配置都没有问题.但是就是不启动没办法,准备写一个检查进行启动.最近写shell很少.所以总结一下.思路判断有没有服务进程.如果没有服务进程.调用启动服务进程如果有服务进程,那就不做任......
  • 【Jmeter】BeanShell 脚本
    一、BeanShellBeanShell是由java编写的,是一个轻量级的脚本语言,也相当于一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己......
  • 打卡 c语言趣味编程 爱因斯坦的数学问题
    问题描述:爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问在1~N内,有多少个数能满足?思路:使用一个for循环来遍历从1到N的所有数,对于每......
  • shell脚本使用ssh远程执行命令通过密码的方式登录
    shell脚本使用ssh远程执行命令通过密码的方式登录sshpass是一个在非交互式ssh会话中自动输入密码的工具。它可以直接在命令行中指定密码,因此可以用于Shell脚本等自动化场景。在RedHat系统中,可以通过epel-release源安装sshpass。epel-release源是ExtraPackagesfor......
  • PowerShell里cd文件夹报错,是因为文件名称中包含空格
    PowerShell里cd文件夹报错,是因为文件名称中包含空格。需要将文件包在引号中。 cd"C:\ProgramFiles"  ......
  • 《3D编程模式》写书-第6次记录
    大家好,这段时间我完成了对初稿的第二轮修改,已经把稿子提交给编辑了这里是所有的的写书记录:《3D编程模式》写书记录本轮修改主要进行了下面的修改:修改UML描述增加依赖关系角色之间的关系中增加x对x的明确描述修改分析角色“总体来看”加上用户这个部分,使其与UML......