shell编程之循环语句和函数

目录

一、循环语句之for语句

1.for语句的结构

概述

格式

举例说明

2.for语句应用示例

批量增加用户

进阶之批量增加用户

批量删除用户

根据IP地址检查主机状态 

密码保护,防暴力破解

抽奖

二、循环语句之while语句

1.while语句的结构

概述

格式

举例 

2.while语句应用示例

1-30不能被2整除的数

批量添加用户

猜数字大小

三、循环语句之until语句

1.until语句的结构

概述

格式

举例说明 

四、shell函数 

1.概述

2.shell函数定义

3.调用函数的方法

4.举例


一、循环语句之for语句

1.for语句的结构

概述

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

格式

for 变量名 in 取值列表 
do
    命令序列
done

例:
for 收件人 in 邮件地址列表
do
    发送邮件
done

 

举例说明

 如上图所示,为最基础的两个for循环结构,分别展示了一到九和a到g通过for循环依次将取值表示出来 。

2.for语句应用示例

批量增加用户

  1. 如图所示,创建一个脚本文件demo10.sh
  2. #!/bin/bash为注释器
  3. seq 为命令,表示产生从某个数到另外一个数之间的所有整数,seq 3表示为一到三所有整数
  4. useradd zrk$i 
  5. echo "123456"|passwd --stdin zrk$i
  6. 创建用户,并将123456赋予其作为密码


给demo10.sh赋予权限,并进行运行,查看结果。验证之后未发现问题,实验成功。 

进阶之批量增加用户

 首先,创建一个txt文本,在其中输入所需要的用户名

其次通过cat命令进行查看

  1. 创建一个脚本文件demo11.sh 
  2. op=`cat /root/user.txt`首先让之前创建的txt文件等于一个值
  3. useradd $uname  创建命令添加用户
  4. echo "123456"|passwd --stdin $uname &>/dev/null赋予所创建用户密码123456,为了简洁明了将过程隐藏,结束。

查看脚本是否存在bug,并进行验证,结果正确。 

批量删除用户

  1. 创建脚本demo12.sh,将之前创建的11脚本复制过来/
  2. 将原先创建命令改为删除命令userdel,查看结果。 

  • 给12脚本赋权限并执行。
  • 查看用户列表,显示之前批量创建的用户已被删除,验证成功。 

根据IP地址检查主机状态 

创建txt文件,里面输入准备的IP,查看IP 。 

  1. 创建14脚本文件,开始编辑。
  2. 赋予一个值为之前创建的txt文本。
  3. 输入命令保留pingIP,并保留四行结果,将过程隐藏。
  4. 如果满足值为0,则输出结果主机可通,反之不通。 

查看结果,四个IP中只有192.168.169.4可通,其余均不通。 

密码保护,防暴力破解

  • 创建15脚本文件,进行编辑
  • 设置密码为12345678,循环次数为3次
  • 让用户输入一个值,若与密码相等,则输出密码正确,命令结束。
  • 若密码错误,最大可尝试三次,第四次输入密码时自动生成警告,结束循环。

  1. 运行脚本,输入错误密码,重新输入,第四次时触发警告,结束。
  2. 重新运行脚本,在第三次输入正确密码,密码正确,结束
  3. 再次运行脚本,输入正确密码,密码正确,结束。 

抽奖

创建txt文件,输入抽奖的四人并进行查看。 

  1. 创建13脚本文件进行编辑
  2. 取abcd四个数,赋值为0
  3. 使用for循环语句,令变量小于等于10大于等于1,i++使i的值加一表示
  4. 取随机数余数为0,1,2,3 加二后将值赋予文本第二列,则lzz用户无法选中。
  5. 查看四个用户各获取多少次。 

 运行脚本,查看结果。

二、循环语句之while语句

1.while语句的结构

概述

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

格式

while条件测试操作

do

      命令序列

done

例:

while未猜中正确价格

do

     反复猜测商品价格

done

举例 

 上图为while循环,赋值变量i,如果小于6,输出i,并再次循环直到大于等于6,将此时的结果输出,并进行验证,结果无误。

2.while语句应用示例

1-30不能被2整除的数

 

  • 赋值变量i为1-30,带入while循环中;
  • 若i除以2的值不等于0则输出结果,否则加一重新进入循环;
  • i值到30结束,输出所有结果,并进行验证,结果无误。

批量添加用户

 

  1. 创建一个脚本while3.sh,并进行编辑;
  2. 赋值用户拆分为两部分,前面为主名q,后面为编号i;
  3. 令变量i小于等于10,进入while循环;
  4. 将创建的账户统一赋予密码123456,并将过程隐藏;
  5. 给脚本添加权限,运行进行验证,结果无误。

猜数字大小

  1. 创建脚本while4.sh,并进行编辑;
  2. 设一个正确值为128;
  3. 让用户随机输入一个数字,如果等于128,正确并结束循环,若大于,输出结果为你猜大了,并再次进入循环;若小于,输出结果为你猜小了,并再次进入循环,直到结果为128为止结束;
  4. 保存脚本,赋予权限,运行脚本进行验证,结果无误。

三、循环语句之until语句

1.until语句的结构

概述

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

格式

until 条件测试操作

do

     命令序列

done

例:

while 未超过10

do

     数字依次递增

done

举例说明 

 

  • 创建脚本until1.sh脚本,并进行编辑;
  • 让变量i等于11 否则i加一再次进入循环,多次循环的数字进行相加直到i等于11为止结束;
  • 输出结果,得到1到10的值为55,进行验证,结果无误。

 

四、shell函数 

1.概述

  • 将命令序列按格式写在一起
  • 可方便重复使用命令序列

2.shell函数定义

[ function ] 函数名(){

        命令序列

        [return x]

}

3.调用函数的方法

函数名 [参数1] [参数2]

4.举例

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值