首页 > 系统相关 >shell脚本循环语句

shell脚本循环语句

时间:2023-02-05 23:22:18浏览次数:32  
标签:语句 脚本 shell do sum echo bin 100

shell脚本循环语句

一、for循环语句

for语句需要定义一个变量和取值列表,根据不同的取值执行相同的命令,知道变量值用完。

取值列表里包含多个属性相同的对象,例如:IP地址,通信录等。

#for语句结构
for 变量名 in 取值列表
do

  命令序列
done

示例1:for循环的入门,一般都是从求和开始,下面就先就1~100的和。
#!/bin/bash
#
sum=0
for i in {1..100}
do
    sum=$[$i+$sum]
done
  echo "0-100的和为:" $sum

#如果算的是1~100之间每个两位数的和,即{1、3、5、7、...、99},for循环如下: 
for i in {1..100..2}
#其他都是一样的。
还有一种方法
#!/bin/bash
sum=0
for ((i=1;i<=100;i++))
do
sum=$[sum+i]
done

语句示例补充:下面是求1~100的和的不同表达。(都测试过,这里就不再贴图了,想试的可以复制试试)
格式一:
#!/bin/bash
#
sum=0
for i in $(seq 1 100)      #{1、3、5、...、99}相加为$(seq 1 2 100) 
do
    sum=$[$i+$sum]
done
  echo "0-100的和为:" $sum
示例2:批量添加用户,用户名存放在users.txt文件中,每行一个;初始密码均设为123456
#!/bin/bash
#
a=`cat ~/test/users.txt`
for i in $a
do
  useradd $i
  echo "123456" | passwd --stdin $i &>/dev/null
done

示例3:根据IP地址检查主机状态;IP地址存放在ipadds.txt文件中,每行一个;
#!/bin/bash
#
a=`cat ~/test/ipadds.txt`

for i in $a
do
  ping -c 3 -i 0.5 -W 2 $i &>/dev/null
  if [ $? -eq 0 ];then
    echo "$i 主机在线"
  else
    echo "$i 主机不在线"
  fi
done

二、while循环语句

根据特定条件反复执行一个命令序列,直到不满足条件为止。

编写时可能会出现死循环,要避免这种情况发生

true(真)和false(假)为特殊条件测试操作,也可以在if语句的条件测试中使用。

true作为条件时,表示条件永远成立,无限执行,也就是死循环,需要强制终止

false作为条件时,表示条件不成立,不执行命令序列

#while语句结构
while 条件测试操作
do
  命令序列
done

示例1:批量添加用户; 用户名称以stu开头,按数字顺序进行编号; 
一共添加20个用户,即stu1、stu2、......、stu20 
初始密码均设为123456
#!/bin/bash
#
i=1
while [ $i -le 20 ]
do
  useradd stu$i
  echo "123456" | passwd --stdin $i &>/dev/null
  let i++
done

示例2:猜商品价格游戏;通过变量RANDOM获得随机数;提示用户猜测并记录次数,猜中后退出循环
#我这里还加了if语句填了一点其他元素。
#!/bin/bash
#
a=$(expr ${RANDOM} % 1000)
i=0
while true
do
  read -p "猜猜看我想的是哪个数,范围在0~999。" shu
  let i++
  if [ $shu -eq $a ];then
      if [ $i -le 10 ];then
        echo "太强了,你猜了$i 次就猜中了,可惜没得奖励。"
      else
        echo "猜了$i 次才猜中,你还差的远呢" 
      fi
    exit 0
  elif [ $shu -lt $a ];then
        if [ $(expr $a - $shu) -le 5 ] ;then
          echo "虽然数小了,但已经很近了,你在想想"
        else
          echo "不好意思,猜的太小了"
        fi
  else
       if [ $(expr $shu - $a) -le 5 ];then
         echo "虽然数大了,但已经很近了,你在考虑考虑"
       else
         echo "不好意思,猜大了,数再小点"
       fi
  fi
done

三、until循环语句

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

一般熟练运用while即可,这个很少用。

示例:计算1~50的和值;通过循环累加的方式计算1~50的和值
  
#!/bin/bash
#
a=0
sum=0
until [ $a -gt 100 ]
do
  sum=$[$sum+$a]
  let a++
done
echo "1-100的和为:$sum"

四、结束循环----break和continue

break跳出单个循环

#!/bin/bash
for ((a=1; a<=15; a++))
do
	if [ $a -gt 5 ] && [ $a -lt 10 ]
	then
		continue
	fi
	echo "current value: $a"
done

五、转义字符

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"前面的字符不会被覆盖

\\ 表示插入"\"本身;

标签:语句,脚本,shell,do,sum,echo,bin,100
From: https://www.cnblogs.com/xuyuankai/p/17094170.html

相关文章

  • Linux系统Shell脚本第五章:shell数组、正则表达式及文件三剑客之AWK
    一、shell数组1.数组分类①关联数组:必须声明才可以使用,命令:delare -A  数组名  ②普通数组:利用数字下标节约变量,可以不声明也可以声明,命令:delare-a 数组名d......
  • shell脚本之条件语句
    shell脚本之条件语句一、条件测试操作1、测试命令------test可以对特定条件进行测试,并根据返回值来判断条件是否成立(返回值为0表示条件成立,反之不成立)。使用test命令......
  • Linux系统Shell脚本第四章:shell函数
    一、shell函数1.函数的作用定义较为复杂的但是需要重复使用的内容,以便再次使用可以直接调用函数节约时间,提高效率2.函数使用步骤①首先是定义函数②其次是调用函数(......
  • python条件语句
    1、if语句:如果满足条件,则执行Aif条件:    Aif__name__=='__main__':a=2ifa==2:print('成功了')2、if-else语句:如果满足条件,则执行A;否则......
  • Sql语句
    SQL中selectcount(1)count中的1到底是什么意思呢?和count(*)的区别?count(1),其实就是计算一共有多少符合条件的行。1并不是表示第一个字段,而是表示一个固定值。其实就......
  • 刷教体局投票脚本研究
    classid=27;//班级select=4;//选项:1未选择;2很满意;3满意;4基本满意;5不满意;document.querySelectorAll("#div1>div.ui-select>div>select>option")[1].setAtt......
  • shell规范写法与变量
    shell规范写法与变量一、shell脚本概述1、shell是什么?Shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个“命令解释器”的角色,负责接收用户输入的操作......
  • Linux脚本Shell脚本第三章:for 、while循环
    一、for循环1.基本格式for  变量名称(注意是名称不是变量$等)  [ in  名称范围 ](可以不写)do  执行内容   若满足循环则做什么动作done  ......
  • Linux系统Shell脚本第二章:条件语句
    一、条件语句1、测试①test命令测试②[  ]测试(注意前后需要有空格)③[[  ]]加强版[  ],测试支持通配符和正则表达式三种测试方法选项:-d:测试是否为目录(Directo......
  • shell函数和数组
    一、函数1、函数使用方法定义函数再引用函数查看系统限制所有函数:declare-F看函数定义详细内容:declare-f 函数名  删除函数:unset 函数名 2、注......