shell脚本中基本的三种循环
一丶讲循环之前,需要了解shell脚本中 条件测试的用法和比较的用法
条件测试 [ ] test
1.字符串的比较
== 判断是否相等
[ a == b ] 或 test a == b
!= 判断是否不相等
[ a != b ] 或 test a != b
-z 判断是否为空
[ -z $a ]
2.数字的比较
-eq 等于
-ne 不等于
-gt 大于
-ge 大于等于
-lt 小于
-le 小于等于
有点难记 所以个人总结了一下 带e的都有等于 带g的都有大于 带l 的 都有小于
3.文件的判断
-e 判断文件是否存在,不关心文件类型
-f 判断文件是否存在,且类型必须是普通文件
-d 判断文件是否存在,且类型必须是目录
判断当前用户是否拥有相关权限:
-r 是否有读 对管理员判断无效
-w 是否有写 对管理员判断无效
-x 是否能执行
这个应该很好记 权限类型什么的经常用到
4.逻辑判断
&& 并且 之前任务成功,才执行之后任务
|| 或者 之前任务失败,才执行之后任务
; 前后无逻辑关系, 执行完前面任务,继续执行后面的
二丶下面进入我们的循环
if循环—if循环中有三种分支
if 单分支
格式:
if 条件测试 ;then
命令序列
fi
#!/bin/bash
if [ 1 == 1 ];then
echo "一等于一"
fi
if 双分支
格式:
if 条件测试 ; then
命令序列1
else
命令序列2
fi
#!/bin/bash
if [ $1 -gt 10 ];then
echo "这个数大于10"
else
echo "这个数小于等于10"
fi
if 多分支
格式:
if 条件测试1 ; then
命令序列1
elif 条件测试2 ;then
命令序列2
…
else
命令序列n
fi
#!/bin/bash
x=$[RANDOM%10]
read -p "请输入一个0-9之间的数字:" n
if [ $x -eq $n ];then
echo "恭喜你猜对了"
elif [ $n -gt $x ]; then
echo "你猜大了"
else
echo "你猜小了"
fi
for循环
for循环 需要注意两个地方
1.循环的次数
2.循环过程中调用的变量
for 循环
格式:
for 变量名 in 值1 值2 值3…
do
循环任务
done
#!/bin/bash
for a in {1..3}
do
echo $a
done
while 条件测试
do
命令序列
done
比如这个猜数游戏
#!/bim/bash
a=0 #设置一个变量
x=$[RANDOM%100] #生成一个随机数给x 这里取100的余数 所以范围是0-99
while :
do
read -p "请输入一个0-99的数字:" n
if [ $x -eq $n ];then #-eq 等于的意思
echo "恭喜你猜对了"
let a++
echo "你一共猜了$a次"
exit
elif [ $n -lt $x ];then #-lt 小于的意思
echo "小了"
let a++
else
echo "大了"
let a++
fi
done