shell_for循环_while_until_break_continue语句用法

这里写目录标题

一.for语句接构

1.概述

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




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



shell_for循环_while_until_break_continue语句用法

2.三种表达式

表示形式1:

shell_for循环_while_until_break_continue语句用法

表示形式2:

shell_for循环_while_until_break_continue语句用法

表示形式3:

shell_for循环_while_until_break_continue语句用法

shell_for循环_while_until_break_continue语句用法

二.实例

1.批量添加用户

  • 批量添加用户
  • 用户名存放在users.txt文件中
  • 初始密码设为123456
  • 验证脚本

shell_for循环_while_until_break_continue语句用法shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

2根据ip地址检测主机状态

  • 根据ip地址检查主机状态
  • 使用pin命令检测各主机的连通性

#!/bin/bash
for i in 192.168.133.{1..10}
do
  ping -c 3 -i 1 -W 2 $i &> /dev/null

  echo "$i is online"
done
~            

shell_for循环_while_until_break_continue语句用法shell_for循环_while_until_break_continue语句用法

3.计算从1到100所有整数的和


#!/bin/bash
sum=0
i=1
for i in {1..100}

do
   sum=$[$i+$sum]

done

echo $sum
~             

shell_for循环_while_until_break_continue语句用法

shell_for循环_while_until_break_continue语句用法

4.提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

#!/bin/bash
sum=0
read -p "输入一个1-100的整数" c

for ((i=1;i<=$c;i++))

do
   sum=$[$sum + $i]

done

    echo "1到$i的所有整数和为" $sum


shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

5.滤出从1到100所有整数的奇偶数

#!/bin/bash
sum=0
for i in {1..100}

do
     a=$(($i % 2))

  if
     [ $a -eq 0 ]
then
   echo "$i为偶数"
   else
    echo "$i为奇数"
fi
done

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

方法2:
#!/bin/bash
for i in {1..100..2}

do
    echo "奇数为:" $i
done
for i in {2..100..2}

do
    echo "偶数为:" $i
done
~    

6.求从1到100所有整数的偶数和、奇数和

#!/bin/bash
sum=0
sen=0
for i in {1..100..2}
do
  sum=$[$sum + $i]
done
   for i in {0..100..2}
do
   sen=$[$sen +$i]
done
     echo "奇数和为:"$sum
     echo "偶数和为:"$sen

shell_for循环_while_until_break_continue语句用法shell_for循环_while_until_break_continue语句用法

7.检测指定范围主机是否通信,并将通信的主机ip输出到文件host_ip

#!/bin/bash
for i in 192.168.133.{10..20}
do
   ping -c 3 -i 0.5 -W 2 $i && echo "$i is online" && >> host_ip
done

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

8.输出/dev目录中的所有可执行文件

#!/bin/bash
for i in /dev/*
do
  if [ -x $i ]
then
  echo "$i 有执行权限"
else
   echo "$i 无执行权限"
fi
done
~         

shell_for循环_while_until_break_continue语句用法

三.while 语句

1.概述

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

while 条件测试操作
do
   命令序列
done

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

.实例
1.批量添加用户
  • 用户名称以stu开头,按数字进行编号
  • 一共添加20个用户,即stu1…stu20
  • 初始密码设置为123456

#!/bin/bash
i=1
c="stu"
while [ $i -le 20 ]  
  do
    useradd $c$i
    echo "123456" | passwd --stdin $c$i
   let i++
done
~     

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

2.猜商品价格游戏
  • 0-999价格之间
  • 会提示用户猜大了,猜小了
  • 提示用户猜测并记录次数,猜中后退出循环
在这里插入代码片


price=$[$RANDOM % 1000]
a=0
num=0
echo "猜猜商品价格是多少"
while [ $a -eq 0 ]
do
let num++
read -p "请输入你猜的价格:" b
if [ $b -eq $price ];then

  echo "恭喜,你猜对了!"
  let a++

elif [ $b -gt $price ];then
  echo "你猜大了!"

elif [ $b -lt $price ];then
  echo "你猜小了!"

fi

done
echo "你总共猜了 $num 次。"

shell_for循环_while_until_break_continue语句用法

四.until语句

1.概述
  • 重复测试某个条件,只要条件不成立则反复执行

until 条件测试操作
do  
   命令序列
done

shell_for循环_while_until_break_continue语句用法


#!/bin/bash
c=0

until [ $c -ge 5 ]
do
 echo $c
  let c++
done
~       

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

实例
1.计算1-50的和
  • 通过循环累加的方式计算1-50的和值

#!/bin/bash
c=0
sum=0
until [ $c -gt 50 ]
do
 sum=$[$sum + $c]
  let c++
done
   echo "1-50的和值为:" $sum

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

五.break 跳出单个循环

#!/bin/bash
for ((a=1; a<=5; a++))
do
   echo "外层循环为:" $a

for ((b=1; b<=5; b++))
do
   echo "内层循环为:" $b
if [ $b -eq 3 ]
then
   break
 fi


done

done

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法
break2:

shell_for循环_while_until_break_continue语句用法
shell_for循环_while_until_break_continue语句用法

六.continue 中止某次循环中的命令

#!/bin/bash
for ((a=1; a<=5; a++))
do
   echo "外层循环为:"$a

if [ $a -gt 2 -a $a -lt 4 ]
then
       continue
fi
     echo $a

done

shell_for循环_while_until_break_continue语句用法

shell_for循环_while_until_break_continue语句用法

七.IFS字段分隔符

默认包含 空格,制表符,换行符
查看命令:set | grep IFS
IFS=$' \t\n'

修改成只换行
IFS=$'\n'

IFS=:
IFS=','

IFS.OLD=$IFS
IFS=$'\n'
...
IFS=$IFS.OLD

shell_for循环_while_until_break_continue语句用法

八.转义字符



echo -n 表示不换行输出

echo -e 输出转义字符,将转义后的内容输出到屏幕上

常用的转义字符如下:
\b 转义后相当于按退格键(backspace),但前提是"\b"后面存在字符;"\b"表示删除前一个字符,"\b\b"表示删除前两个字符。

\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出。

\n 换行,被输出的字符从"\n"处开始另起一行。

\f 换行,但是换行后的新行的开头位置连接着上一行的行尾;

\v 与\f相同;

\t 转以后表示插入tab,即横向制表符;

\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖

\\ 表示插入"\"本身;
  • -n:

shell_for循环_while_until_break_continue语句用法

shell_for循环_while_until_break_continue语句用法

  • echo -e “\b”的用法

shell_for循环_while_until_break_continue语句用法

上一篇:04_SHELL编程之循环语句


下一篇:linux刷新查看文件夹内容