for语句的使用

在编程语言中少不了使用逻辑结构去进行操作繁杂的操作,这样解决了繁琐的步骤,容易让别人读懂。
在linux中有常用的三种循环循环:for,while,until
基本规则:

循环体:要执行的代码;可能要执行n遍;
    进入条件;
    退出条件;

1、for循环的格式

for循环:
    for 变量名 in 列表;do
        循环体
    done

执行机制:依次将列表中的元素赋值给“变量名”;每一次赋值都执行一次循环体;直到列表中的元素耗尽,循环结束。
示例:添加10个用户,user1-user10,密码同用户名

#!/bin/bash
#
if [ !$UID -eq 0 ];then
echo "only admin can create username."
exit 1
else
for i in {1..10};do
    if id user$1 &>/dev/null;do
        echo "The username has done."
    else
        useradd user$i
        echo "user$i" |passwd --stdin user$i &>/dev/null
        echo "Add user$1 finished."
done        
fi

2、在for循环中列表的生成方式

(1)直接给出字符串列表
(2)整数列表
    (a){start..end}
     (b)$(seq[start[step]end])
     (c)返回列表的命令 $(command) 
    (d)glob
    (e)变量引用
        $@  $*

示例:判读某路径下所有文件类型

#!/bin/bash
#
for file in $(ls /var);do
if [ -f /var/$file ];then
    echo "common file"
elif [ -d /var/$file ];then
    echo "directory"
elif [ -L /var/$file ];then
    echo "symbloic file"
else 
    echo "other file"
fi

在for循环中先后次序至关重要。 例如上面的示例先判断目录和先判断链接文件显示的结果时截然不同的。

示例:判断状态

#!/bin/bash
#
declare estab=0
declare listen=0
declare other=0
for state in $(netstat -tan |grep 'tcp'|awk '{print $NF}');do
if [ "$stat"=="ESTABLEHED" ];then
    let estab++
elif [ "$stat"=="LISTEN" ];then
    let listen++
else
    let other++
fi
done
echo "ESTABLISHED:$estab"
echo "LISTEN:$listen"
echo "OTHER:$other"

练习1:/etc/rc.d/rc3.d目录下分别有多个以K开头和以S开头的文件:
分别读取每一个文件,而后输出;K开头 ,“输出文件名 stop” ;S开头的输出“文件名 start”

>

#
for filename in $(ls /etc/rc.d/rc3.d);do
        if [ "$filename"=~"K*" ];then
                echo "$filename stop"
        elif [ "$filename"=~"S*" ];then
                echo "$filename start"
        else
                echo "oter type"
        fi
done

练习二:写一个脚本,使用ping命令探测172.16.250.1-254之间的主机的在线状态。

#
read -p "Enter enternet number,For example 172.16.0: " IPnumber
for num in {1..254};do
        if  ping -c 1 -w 1 $IPnumber.$num >/dev/null ;then
                echo "The state is active"
        else
                echo "The state isn't active"
        fi
done
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值