linux--shell之循环语句

循环语句应用

- 在日常工作中需要重复运行大量的指令,shell提供了for,while,until,select循环语句以实现特定环境下特定指令的反复利用
- 每次运行命令序列时都要对条件进行过滤,满足条件才可执行

for循环

#语法格式一:
for 变量 in 值1 值2 ……值N
do
命令序列
done

#变量通过赋值in里面的值,多个赋值用空格隔开

#语法格式2:
for ((初始变量值;结束循环条件;运算))
do
命令序列
done

for循环案例

#给多个客户批量发送邮件
mail -s  ”标题“  xx@qq.com   <  /neirong


#!/bin/bash
DOMAIN=163.com
for MAIL_USER in dana  dahuang dalv
do
mail -s "LOG" $MAIL_USER@$DOMAIN < /var/log/messages
echo "$MAIL_USER 邮件发送成功"
done



#利用for循环打印九九乘法表
#!/bin/bash
for i in {1..9}
do
        for ((j=1;j<=i;j++))
        do
        printf "%-8s" $j*$i=$((j*i))
        done
        echo 
done

while循环语句

语法格式一:
while [条件]
do
命令序列
done



语法格式2
while read -r  line
do
命令序列
done  <  file


#通过read命令每次读取一行文件,文件内容有多少行,while循环多少次

while循环练习

#批量添加20个用户,用户名为 TLN,N为1-20编号

 
[root@server0 programe]# cat add_user.sh 
#!/bin/bash
# Add twenty users  with while

NUM=1
while [ $NUM -le 20 ]
do
    #userdel -r TL${NUM}   #删除用户时,注意添加-r选项
    useradd TL${NUM}
    echo TL${NUM}“创建成功”
    ID=`id TL${NUM}`
    echo TL${NUM}"用户的UID号为"${ID}
    NUM=$((NUM+1))
done
[root@server0 programe]# 


#打印网卡配置文件
[root@server0 programe]# cat read_nic.sh 
#!/bin/bash
#read nic file

FILE=/etc/sysconfig/network-scripts/ifcfg-eno16777728

while read -r line
do
echo $line
done < $FILE
[root@server0 programe]# 



#无限循环菜单,根据用户选择实现不同的菜单功能,最后退出脚本
[root@server0 programe]# cat new_menu.sh 
#!/bin/bash
while true     #无限循环
do
clear
echo "…………………………………………………………………………………………"
echo "1.Display CPU info:"
echo "2.Display system load:"
echo "3.Display Mem and swap info:"
echo "4.Display filesytem mount info:"
echo "5.Exit Program"
echo "…………………………………………………………………………………………"
read -p "plese select your iterm(1-5):" U_SELECT
case $U_SELECT in
    1)
    echo $(cat /proc/cpuinfo)
    read -p "plese enter to continue:"
    ;;
    2)
    echo $(uptime)
    read -p "plese enter to continue:"
    ;;
    3)
    echo $(free)
    read -p "plese enter to continue:"
    ;;    
    4)
    echo $(df -hT)
    read -p "plese enter to continue:"
        ;;
    5)
    exit 0
        ;;
    *)
    read -p "plese select 1-5,Press Enter to continue:"
esac
done
[root@server0 programe]# 

until

语法格式
until [条件]
do
命令序列
done

#该语句根据条件判断循环是否继续,until代表的是知道满足条件时循环结束


#批量删除用户
[root@server0 programe]# cat del_user.sh 
#!/bin/bash
#delete user
NUM=20
until [ $NUM -eq 0 ]
do
    userdel -r TL${NUM}
    echo "user  TL${NUM} delete ok!"
    NUM=$((NUM-1))
done
[root@server0 programe]# 

select语句

select用来生成菜单工具
select循环与for循环格式相同

#select生成籍贯提问菜单,并通过echo回显
[root@server0 programe]# cat select_p.sh 
#!/bin/bash
echo "Where are you from?"
select var in 'BJ' 'CD' 'DH'  'CQ' 'TJ'  'LZ' 'NY'
do
break
done
echo "You are from $var"
[root@server0 programe]# 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值