Shell编程之循环语句(for、while、until循环语句)

 一、

1. 常用的转义字符如下:

\b 转义后相当于按退格键(backspace),但前提是“\b”后面存在字符;“\b”表示删除前一个字符;“\b”表示删除前一个字符;“\b\b”表示删除前两个字符。

\c 不换行输出,在“\c”后面不存在字符的情况下,作用相当于 echo -n;

    但是当“\c”后面仍然存在字符时,“\c”后面的字符将不会被输出

\n 换行,被输出的字符从“n”处开始另起一行。

\f  换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f 相同

\t  转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用“\r”以后的字符覆盖“\r”之前同等长度的字符;但是当“\r”后面不存在任何字符时,“\”前面的字符不会被覆盖

\\ 表示插入“\”本身;

echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

(1)\b  ( “\b”后面存在字符  ),如下两个例子:

 

 (2)\c 不换行输出,在“\c”后面不存在字符的情况下

 (3)\n 换行,被输出的字符从“n”处开始另起一行

(4) f  换行,但是换行后的新行的开头位置连接着上一行的行尾;

(5)\v 与\f 相同

(6)\t  转以后表示插入tab,即横向制表符

(7)\r 光标移至行首,但不换行,相当于使用“\r”以后的字符覆盖“\r”之前同等长度的字符;但是当“\r”后面不存在任何字符时,“\”前面的字符不会被覆盖

(8)\\ 表示插入“\”本身;

2. 

i=`echo "11,22,33,44"`

echo ${i%,*}

11,22,33

\\从最后倒数到最短的匹配部分(用%)后面的逗号的地方被删除

 

echo ${i%%,*}

11

\\从最后倒数到最长的匹配部分(用%%)后面的逗号的地方都被删除

 

echo ${i#*,}

22,33,44

\\从开头到最短的匹配部分(用#)后面的逗号的地方被删除

 

echo ${i#*,}

44

\\从开头到最长的匹配部分(用##)后面的逗号的地方被删除

 

 

 

 二、循环语句

  • for 语句循环
  • while 语句
  • until 循环语句

 1. for语句的结构

  • 读取不同的变量值,用来逐个执行同一组命令

 示例:

for  ((i=1; i<=10; i++))

for i in 取值列表

for i in 1 2 3 4 5 6 7 8 9 10

do

 

done

 同样使用 seq 命令也有同样的效果。

 

 for语句的结构

 

 

 

 for 语句应用示例

  • 示例1
    • 批量添加用户 
    • 用户名存放在 users.txt 文件中,每行一个
    • 初始密码均设为123456
    • 验证脚本

(1)先创建几个用户  vim users.txt

polo g   #如果polo 和 g之间有空格,则表示两个用户(下面验证信息里查看详情)
TS
XXXTENTACION
Pharaoh
Shawn

(2)获取 users.tx 里面的信息 

 (3)再写个脚本 vim adduser.sh

 (4)给权限,验证脚本

 

 (5)查看用户是否添加成功 vim /etc/passwd

 (6)查看用户密码是否创建成功 vim/etc/shadow

 

示例2:

  • 根据IP地址检查主机状态
    • IP地址存放在ipadds.txt文件中,每行一个
    • 使用ping命令检测各主机的连通性

  1. vim ipadds.txt 输入几个IP地址 

 

 2. 再写个ping命令的脚本 vim ping.sh

 3. 给权限、验证

2. while语句的结构

  • 重复测试某个条件,只要条件成立则反复执行

 

 

 

 while 语句用于示例

示例1:

  • 批量添加用户
    • 用户名称以stu开头,按数字顺序进行编号
    • 一共添加20个用户,即stu1、stu2、......、stu20
    • 初始密码均设为123456

1. 添加用户,设置初始密码

2. 赋给 useradd2.sh 权限并验证

 

 

 示例2:

  • 猜商品价格游戏
    • 通过变量RANDOM获得随机数
    • 提示用户猜测并记录次数,猜中后退出循环

首先RANDOM的值是随机的

 

1. 编辑脚本

 

 2. 给权限

 3. 验证

 

 3. until 语句的结构

  • 重复测试某个条件,只要条件不成立则反复执行

 示例:

 until 语句应用示例

示例1:

  • 计算1~50的和值
    • 通过循环累加的方式计算1~50的和值

 

posted @ 2021-07-19 23:28  DoYouWantMore  阅读(142)  评论(0编辑  收藏  举报