文章目录
-
- 一、for嵌套
- 二、for与数组
- 三、if高级用法
-
- [3.1、条件符号使用双圆括号,可以在条件中植入数学表达式 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++))
do
echo $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++))
do
for ((B=1;B<=$A;B++))
do
echo -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 3
do
echo ${name[$i]}
done
2.2、使用for循环进行数组存值
for i in `seq 0 9`
do
read -p "name: " name[$i]
done
echo ${name[@]}
三、if高级用法
3.1、条件符号使用双圆括号,可以在条件中植入数学表达式 if (())
#!/bin/bash
#Author: www.zutuanxue.com
#Created Time:
#Script Description:
if (( (5+5-5)*5/5 > 10 ))
then
echo "yes"
else
echo "no"
fi
3.2、使用双方括号,可以在条件中使用通配符
通过代码看下 ,为字符串提供高级功能,模式匹配 r* 匹配r开头的字符串
#!/bin/bash
#Author: www.zutuanxue.com
#Created Time:
#Script Description:
for var in ab ac rx bx rvv vt
do
if [[ "$var" == r* ]]
then
echo "$var"
fi
done
四、简写if
省去了关键字,条件为真采用&&符号链接命令块,条件为假采用||链接命令块
简写if一般用在简单的判断中
if [ ! -d /tmp/baism ]
then
mkdir /tmp/baism
fi
可以简写为
[ ! -d /tmp/baism ] && mkdir /tmp/baism
if [ $USER == 'root' ]
then
echo "hello root"
else
echo "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
- 文件权限相关的判断
l
-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" ];then
echo "用户名为空"
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
fielse echo "用户名错误" exit 1 fi
else
echo "密码不能为空"
exit 1
fi -
多重条件判断
shell
逻辑判断符号:
&& (and 逻辑与) 两个条件同时满足,整个大条件为真
|| (or 逻辑或) 两个条件满足任意一个,整个大条件为真
! 非运算
#用户登录验证
[root@zutuanxue ~]# cat if-6.sh
#!/bin/bash
#1、交互式输入用户名 密码
read -p "user: " myuser
if [ -z "$myuser" ];then
echo "用户名为空"
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' ];then
echo "welcome root"
else
echo "用户名或密码错误"
exit 1
fi
else
echo "密码不能为空"
exit 1
fi
六、课后练习
练习题1、判断/tmp/tyschool目录,如果没有则创建它
练习题2、判断是否有/usr/bin/wget命令,没有则安装他
练习题3、判断当前用户是否为管理员,UID为0或者为root都算管理员
练习题4、打印物理内存使用率
✨ 这就是今天要分享给大家的全部内容了,我们下期再见!😊
🏠 我在CSDN等你哦!我的主页😍