本文主要是介绍【shell脚本速成】for 嵌套和和 if 高级用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、for嵌套
- 二、for与数组
- 三、if高级用法
- 3.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())
- 3.2、使用双方括号,可以在条件中使用通配符
- 四、简写if
- 五、与文件存在与否的判断
- 六、课后练习
🌈你好呀!我是 山顶风景独好
🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊
🌸愿您在此停留的每一刻,都沐浴在轻松愉悦的氛围中。
📖这里不仅有丰富的知识和趣味横生的内容等您来探索,更是一个自由交流的平台,期待您留下独特的思考与见解。🌟
🚀让我们一起踏上这段探索与成长的旅程,携手挖掘更多可能,共同进步!💪✨
一、for嵌套
1.1、for嵌套if
案例:
输出1-9,当输出5时停止输出
案例代码
#!/bin/bash
#
#Author: www.zutuanxue.com
#Created Time:
#Release:
#Description:输出1-9,当输出5时停止输出for ((num=1;num<10;num++))doecho $num[ $num -eq 5 ]&& break
done
1.2、for嵌套for
案例:
打印99乘法表
案例代码
#!/bin/bash
#
#Author: www.zutuanxue.com
#Created Time:
#Release:
#Description:
#打印99乘法表,思考A*B的关系
for ((A=1;A<=9;A++))dofor ((B=1;B<=$A;B++))doecho -n -e "$B*$A=$((A*B)) \t"done#换行echo
done
二、for与数组
for循环与数组
2.1、使用for循环遍历读出数组
name=('tom' 'jarry' 'harry' 'barry')
for i in 0 1 2 3doecho ${name[$i]}done
2.2、使用for循环进行数组存值
for i in `seq 0 9`doread -p "name: " name[$i]doneecho ${name[@]}
三、if高级用法
3.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())
#!/bin/bash
#Author: www.zutuanxue.com
#Created Time:
#Script Description: if (( (5+5-5)*5/5 > 10 ))thenecho "yes"
elseecho "no"
fi
3.2、使用双方括号,可以在条件中使用通配符
通过代码看下 ,为字符串提供高级功能,模式匹配 r* 匹配r开头的字符串
#!/bin/bash
#Author: www.zutuanxue.com
#Created Time:
#Script Description:
for var in ab ac rx bx rvv vtdoif [[ "$var" == r* ]]thenecho "$var"fi
done
四、简写if
省去了关键字,条件为真采用&&符号链接命令块,条件为假采用||链接命令块
简写if一般用在简单的判断中
if [ ! -d /tmp/baism ]thenmkdir /tmp/baism
fi可以简写为[ ! -d /tmp/baism ] && mkdir /tmp/baismif [ $USER == 'root' ]thenecho "hello root"
elseecho "hello guest"
fi可以简写
[ $USER == 'root' ]&&echo "hello root" || echo "hello guest"
if是一个条件判断语句,判断的前提是得有个条件。
接下来我给大家演示一下如何在if条件中植入shell运算条件
五、与文件存在与否的判断
-e 是否存在 不管是文件还是目录,只要存在,条件就成立
-f 是否为普通文件
-d 是否为目录
-S socket
-p pipe
-c character
-b block
-L 软link
- 文件权限相关的判断
-r 当前用户对其是否可读
-w 当前用户对其是否可写
-x 当前用户对其是否可执行
-u 是否有suid
-g 是否sgid
-k 是否有t位
- 两个文件的比较判断
file1 -nt file2 比较file1是否比file2新
file1 -ot file2 比较file1是否比file2旧
file1 -ef file2 比较是否为同一个文件,或者用于判断硬连接,是否指向同一个inode
- 整数之间的判断
-eq 相等
-ne 不等
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于浮点比较运算
比较两个浮点数字的大小
给脚本两个浮点数字 返回他两的关系#思路
1、获得两个浮点数字
2、处理为整形
3、比较
4、输出
- 字符串之间的判断
-z 是否为空字符串 字符串长度为0,就成立
-n 是否为非空字符串 只要字符串非空,就是成立
string1 == string2 是否相等
string1 != string2 不等#用户登录验证[root@zutuanxue ~]# cat if-6.sh
#!/bin/bash
#1、交互式输入用户名 密码
read -p "user: " myuser
if [ -z "$myuser" ];thenecho "用户名为空"exit 1
fi#从外往里写
read -p "password: " mypw
if [ -n "$mypw" ];then#2、判断是否正确#2.1 判断用户名if [ $myuser == "root" ];then#2.2判断密码if [ $mypw == "abc-123" ];thenecho "welcome root"elseecho "密码错误"exit 1fielseecho "用户名错误"exit 1fi elseecho "密码不能为空"exit 1
fi
- 多重条件判断
逻辑判断符号:
&& (and 逻辑与) 两个条件同时满足,整个大条件为真
|| (or 逻辑或) 两个条件满足任意一个,整个大条件为真
! 非运算#用户登录验证
[root@zutuanxue ~]# cat if-6.sh
#!/bin/bash
#1、交互式输入用户名 密码
read -p "user: " myuser
if [ -z "$myuser" ];thenecho "用户名为空"exit 1
fi#从外往里写
read -p "password: " mypw
if [ -n "$mypw" ];then#2、判断是否正确#2.1 判断用户名#if [ $myuser == "root" ];then#2.2判断密码# if [ $mypw == "abc-123" ];then# echo "welcome root"#else# echo "密码错误"# exit 1# fi##else# echo "用户名错误"# exit 1#fi if [ $myuser == 'root' ] && [ $mypw == 'abc-123' ];thenecho "welcome root"elseecho "用户名或密码错误"exit 1fielseecho "密码不能为空"exit 1
fi
六、课后练习
练习题1、判断/tmp/tyschool目录,如果没有则创建它
练习题2、判断是否有/usr/bin/wget命令,没有则安装他
练习题3、判断当前用户是否为管理员,UID为0或者为root都算管理员
练习题4、打印物理内存使用率
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍
这篇关于【shell脚本速成】for 嵌套和和 if 高级用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!