for循环进阶

1、echo的使用

echo 打印

-n 不换行输出

-e 可以输出转义字符

转义字符:\b 相当于退格键 \n 换行,相当于回车 \f 换行,换行后的新行的开头连着上一行的行尾

\t 相当于tab键 相当于一个大空格 横向制表符

echo -ne既可以输出但又不换行

2、break、continue、exit

break 2 循环控制 continue和break 默认数值就是2(2层的意思)

exit:满足条件立刻退出

3、调试

set -x 开启调试

set +x 关闭调试

4、while和until的语法:

while:满足条件执行循环,不满足才会退出

适应死循环,不知道循环多少次,需要主动结束循环或者达到条件才结束循环

while [判断条件]

do

命令序列

done

while死循环格式:

while true #永远为真,死循环

while [ 1 -eq 1 ]

while :

until循环:条件不满足才执行循环,一旦条件成立循环终止。

until [ 条件测试 ]

do

命令序列

done

实例1:分别求出1-100奇数偶数和

i=0
sum1=0
sum2=0
while [ $i -lt 100 ]
do
 let i++
 if [[ $(($i%2)) -eq 0 ]]
 then
 sum1=$(($sum1+$i))
else
 sum2=$(($sum2+$i))
fi
done
 echo $sum1
 echo $sum2

实例2:测试一个网段,c类的私有地址 32类的网段,测试可以ping通的保留到/opt/hosts.txt,ping不通的提示不通

# 并行处理 ping 命令
for ((i=1; i<=254; i++)) do
#把整个循环体的代码看做一个整个内容,相当于并行,&循环成立的内容放入后台执行
    {
        if ping -c 3  192.168.10.$i &> /dev/null; then
            echo $i >> /opt/hosts.txt
        else
            echo "192.168.10.$i ping不通"
        fi
    }&
done

# 等待所有后台进程完成,直接突出,并发执行
wait
echo "Ping操作完成,存活的主机记录在 /opt/hosts.txt 文件中。"

实例3:定义好了一个密码,判断密码输入是否正确,正确的密码是123456 输入正确提示正确 输入3次错误被提示

passwd=123456
for((i=1;i<=3;i++))
do
read -p "请输入密码:" passwd1
if [[ $passwd1 == $passwd ]]
then
echo "密码正确"
exit
else
 echo "密码输密码错误"
fi
done
echo "密码输入错误3次被锁定"

实例4:

用户名存放在users.txt文件中,每行一个,判断文件里的用户名是否存在

如果用户存在,提示用户已存在

用户存在但是没有设置密码,要提示用户设置密码

用户不存在,创建用户,然后给用户创建密码

for user in $(cat /opt/users.txt)
do
cat /etc/passwd | awk -F: '{print $1}' | grep "$user"
if [[ $? -eq 0 ]]
then
#用户存,判断密码
jieuo= cat /etc/shadow | grep "$user" | awk -F: '{print $2}'
#判断密码是否为空
 if [[ "$jieguo" == "!!" || -z "$2" ]]
 then
  read -p "请设置密码:" psd
  echo $psd | passwd --stdin $user
 else
  break
 fi
else
 echo "用户不存在"
 useradd "$user"
 read -p "请设置密码:" psd1
 echo $psd1 | passwd --stdin $user
fi
done

实例5:使用循环语句,将一个0-255的十进制数转换成8位的二进制数

read -p "请输入一个十进制的数:" num
#输出一个8位的数
if [[ $num -ge 0 && $num -le 255 ]]
then
for ((i=1;i<8;i++))
do
#将结果逆序输出
 jieguo=$(($num%2))$jieguo
  num=$(($num/2))
done
echo -n "$jieguo"
else
 echo "输入错误请重新输入!"
fi

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值