目录
一、循环语句
1.1 for循环语句
1.1-1 for语句的结构
读取不同的变量值,用来执行同一组命令
例:
例2:
例3:
例4:
例5:批量创建用户脚本
我们首先创建一个文件,把需要创建的用户放入文件中
执行脚本后我们看不到任何信息,因为交互的信息放入到黑洞中了,所以我们用“cat /etc/passwd”查看我们所创建的用户
例6:
同样我们给脚本执行权限,并运行脚本
例7:
1.1-2 嵌套循环
1.2 while语句结构
重复测试某个条件,只要条件成立则反复执行
例1:
例2:
有特殊字符的必须加双括号
例3:
例4:
例5:
然后我们在用cat /etc/passwd 命令查看我们所创建的用户
例6:
测试我们所写的脚本
例7:监控本机的内存和剩余的磁盘空间
首先打印出可用磁盘空间和内存容量
例8:
break:跳出单个循环
break 3:后面的数字则代表跳出三层循环
continue:终止每次循环中的命令,但是不会完成终止命令
总结:break是运行到$i=5时终止程序运行,直接跳出去; continue是终止执行的我判断语句,继续执行下面的命令
例9:去商场选购物品
#!/bin/bash
i=1
sum=0
while [ $i -le 5 ]
do
echo "进入第$i家商店"
read -p "是否进入看看(yes/no)" doing
while [ $doing = "yes" ]
do
echo "1:衣服 ¥200"
echo "2:鞋子 ¥180"
echo "3:帽子 ¥50"
echo "4:裤子 ¥190"
read -p "请选择需要购买的商品序列号:" num
case $num in
1)
echo "衣服购买成功"
expr $[sum+=200] &>/dev/null
;;
2)
echo "鞋子购买成功"
expr $[sum+=180] &>/dev/null
;;
3)
echo "帽子购买成功"
expr $[sum+=50] &>/dev/null
;;
*)
echo "裤子购买成功"
expr $[sum+=190] &>/dev/null
;;
esac
read -p "是否进行购买(yes/no)" doing
done
let i++
if [ $doing = "no" ]
then continue
fi
done
echo "购物的总价为:$sum"
1.3 until语句的结果
重复测试某个条件,只要条件不成立则反复执行
until #条件测试操作
do
命令序列
done
例1:求1-50的和
2、Shell函数
将命令序列格式写在一起
可方便重复使用命令序列
2.1 Shell函数的定义
方法一:
[function] 函数名(){
命令序列
[return x] #使用return或exit可以显示的结束函数
}
方法二:
函数名(){
命令序列
}
例1:函数的第一种写法
例2:函数的第二种写法
注:shell脚本中是从上往下运行的,如果把函数名放上面则不会运行下面的命令
2.2 函数的作用范围
- 函数在shell脚本中仅在当前的shell环境中有效
- shell脚本中变量默认全局有效
- 将变量限定在函数内部使用local命令
例1:
例2:
例3:
例4:
例5:
例6:
2.3 递归函数
调用自己本身的函数
例2:
2.4 shell数组
数组是存放相同类型数据的合集,在内存中开辟了连续的空间,通常配合循环使用
数组的分类:
普通数组:不需要声明直接定义,下标索引只能是整数
关联数组:需要用declare -A声明否则系统不识别,索引可以是字符串
2.4-1 应用场景包括:
- 获取数组长度
- 获取元素长度
- 遍历元素
- 元素切片
- 元素替换
- 元素删除
2.4-2 数组包括的数据类型
数值类型
字符类型:使用“”或''定义
本章总结
for语句结构
while语句结构
until语句结构
shell函数的定义
数组的使用方法