Shell循环语句与函数

前言

目录

前言

一、for语句结构

二、while语句的结构

三、until语句结构

四、Shell函数


当面对列表重复任务时,使用简单的if语句已经难以满足要求,这时候我们要了解for循环语句更好的解决问题。

一、for语句结构

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

for 变量名 in 取值列表        →→  for 变量名 in邮件地址列表
do                           →→  do
 命令序列                     →→   发送邮件
done                         →→  done 

 例:批量创建用户

#!/bin/bash
ULZST=$(cat /opt/user.txt)   
##user.txt里有需要创建的账号名称

for UNAME in $ULZST
do
  useradd $UNAME
  echo "123456" |passwd --stdin $UNAME & /dev/null

##执行脚本user.txt中所有账号都将创建完成并且密码为123456

例:连续ping IP地址

#!/bin/bash通
HLZST=$(cat /opt/ip.txt)
## ip.txt中有三个IP地址

for IP in $HLIST
do 
ping -c 3 -i 0.2 -w 3 $IP &> /dev/null
##ping三次间隔0.2秒持续三秒
  if [ $! eq 0 ];then
  echo "HOST $IP 通"
else 
  echo "HOST $IP 不通"
fi
done

##执行脚本会分别显示ip.txt中的ip地址是否可以ping通以“通”或“不通”来显示

例:只有输入三次密码的脚本

#!/bin/bash
  init=1234
##设置密码为1234

for i in {1..3}
##循环三次
do
  read -p "请输入密码" pass
    if [ $pass == $init ];then
  echo "密码正确"
  exit
    fi
done
  echo "密码错误"

##执行脚本,只有3次输入密码的机会,只有输入正确的密码才会显示密码正确并退出,
   反之则显示密码错误

二、while语句的结构

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

while条件测试操作      →→   while 未猜中正确的价格
do                         do
  命令序列            →→    反复猜商品的价格    
done                 →→    done

例:显示100以内能被3取余得数

#!/bin/bash
i=1
while [ $i -le 100 ]
  do 
  if [[ $i%3 -ne 0]]
  then
    echo "$i"
  fi
  let i++
  done
 
执行脚本,所有可以被3除的得数都不会显示
1
2
4
。
。
到100

三、until语句结构

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

#!/bin/bash
i=1
sum=0
until [ $i -eq 51 ]
  do
   sum=$[$i+$sum]
    let i++
   done
echo "$sum"

##执行脚本循环50次后跳出得出的结果为1275

四、Shell函数

1 将命令序列按格式写在一起

2 可方便重复使用命令序列

3 Shell函数定义

[ function ] 函数名(){

     命令序列

      [return x]

}

4 函数调用方法

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

例:写一个配置本地YUM源安装httpd的脚本

#!/bin/bash
function backuprepo{
cd /etc/yum.repos.d
mkdir repo.bak
mount /dev/sr0 /mnt > /dev/null


makelocalrepo (){
echo '
[local]
name=local
baseurl=file:///mnt
enabled=1
gpgcheck=0' > local.repo
}

uselocalrepo(){
yum clean all > /dev/null
yum makecache > /dev/null
yum install -y httpd > /dev/null

}

backuprepo
makelocalrepo
uselocalrepo
"domel.sh" 28L,410C

执行脚本YUM已经改成本地源并且安装好httpd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值