for循环
for语句实例:
for示例1:添加用户,存放在users.txt,判断用户是否存在,存在则不添加,密码为123456
for示例2:根据IP地址检查主机状态,IP地址存放在ipadds.txt中,ping命令检测
while循环
while [ 条件测试操作 ]
do #do代表循环的开始
判断式/命令序列
done #done代表循环的结束
while实例
while示例1:添加用户以stu开头,按数字编号,密码为123456
while示例2:通过变量random获得随机数,猜测并记录,猜中退出循环
until循环语句
until实例:
until应用示例
until示例1:计算1——50的和
补充:
关于echo的用法:
set -x 可以查看代码执行过程
echo -n表示不换行输出
echo -e输出转义字符,将转义后的内容输出到屏幕上
常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于echo -n;但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。
\n换行,被输出的字符从"\n"处开始另起一行。
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;
\v 与\f相同;
\t 转以后表示插入tab,即横向制表符;
\r 光标移至行首,但不换行,相当于使用“\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存 在任何字符时,"\r"前面的字符不会被覆盖
\表示插入""本身;
截取字符串 分片 ${ 变量名:下标 : 长度 }
字符串长度 ${#变量名}
i='echo "11,22,33,44"'
echo ${i%,*}
11,22,33
//从最后倒数到最短的匹配部分(用%)后面的逗号的地方被删除
echo ${i%%,*}
11
//从最后倒数到最长的匹配部分(用%%)后面的逗号的地方都被删除
echo ${i#*,}
22,33,44
//从开头到最短的匹配部分(用#)后面的逗号的地方被删除
echo ${i##*,}
44
//从开头到最长的匹配部分(用##)后面的逗号的地方被删除
IFS字段分隔符
默认包含空格,制换符,换行符 可以使用set | grep IFS查看
IFS=$'\n'
修改成只换行
IFS=$' \n'
IFS=:
IFS=','
IFS.OLD=$IFS
IFS=$ '\n'
...
IFS=$IFS.OLD
while read line
---line 为变量名
do
...
done < file
l while read line
do
...
done
练习:输出环境变量PATH的目录所包含的所有可执行文件
例题:编写能够自动生成一个8位随机密码的脚本
例题:假设/opt/test/ 目录中有多个重要文件,编写脚本使用 md5sum 命令一次性判别目录中的文件是否有发生过改动