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

shell脚本——循环脚本

时间:2023-11-22 16:48:57浏览次数:30  
标签:脚本 do shell sum echo 循环 done 100

循环语句

一定要有跳出循环的条件

1、已知循环次数 (来10个新人,新建10个账号)

2、未知循环的次数,但是有一个跳出的条件 (女朋友生气,道歉道到原凉)

for循环:(已知次数)

for  名称(自定义名称)in  词语;  do  命令序列;  done

循环列表只是跟循环的次数有关

如果循环列表有6个值,循环6次

循环列表的 表达形式

{1..10}

{1..100}

{0..100..2} 从0开始到100结束,每次加2 步长为2 打印的都是偶数

{1..100..2} 从1开始到100结束,每次加2 步长为2 打印的都是奇数

 简单的for循环脚本

#计算从1加到100的和
#!/bin/bash
sum=0
i=0
for i in {1..100}
do
let sum+=i
done
echo $sum

#或者

sum=0
i=0
for i in {1..100}
do
sum=$[sum+i]
done
echo $sum

真正循环的是命令序列

for 的第二种格式

for ((表达式1;表达式2;表达式3));do 命令;done

表达式1

表达式2 是一个判断,如果满足表达式2才执行

表达式3

#计算从1到100的和
#!/bin/bash
sum=0
i=0

for((i=0;i<=100;i++))
do
let  sum+=i
done
echo sum=$sum

 for循环的运用:

更改文件的后缀名

#!/bin/bash
for i in *.txt
do
pre=`echo $i|cut -d"." -f1`
mv $i ${pre}.bak
done

九九乘法表

#!/bin/bash
for j in {1..9}
do
        for i in `seq $j`
        do
        echo -e "${i}*${j}=$[i*j]\t\c"
        done
echo
done


for((i=1;i<=9;i++)) do for((j=1;j<=i;j++)) do echo -e "${i}*${j}=$[i*j]\t\c" done echo done

批量创建用户

#!/bin/bash
for i in `cat /data/name.txt`
do
id $i &>/dev/null
if
[ $? -eq 0 ]
then
echo "$i 已存在"
continue
fi
useradd $i
echo 123123 | passwd $i --stdin
done
          

 检测一整个网段的ip地址 主机是否存货

#!/bin/bash
ip=192.168.116.
for i in {1..254}
            
do          
{           
ping -c1 -W1 ${ip}${i}  &>/dev/null 
if [ $? -eq -0 ]
then
echo ${ip}${i} >> /data/hoston 
#将存活的IP地址添加到/data/hoston目录下 else echo ${ip}${i} >> /data/hostoff
#将不存活的IP地址添加到/data/hostoff目录下 fi }& done

#bash -x 可以显示脚本执行过程

 #正在使用的主机地址

 #没有使用的主机地址

while循环:成功执行(限定条件)

while 判断条件 条件成立 继续循环 条件不成立 跳出循环

循环格式:

  • while 判断条件
  • do
  • 命令序列
  • .....
  • done
计算从1加到100的和
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
sum=$[sum+i]
let i++
done
echo $sum

 while循环脚本的运用

快捷创建用户

#!/bin/bash
i=1
while [ $i -le 5 ]
do
useradd stu$i
echo 123123 | passwd stu$i  --stdin
let i++
done

 猜购买商品的价格

#!/bin/bash
m=`echo $[RANDOM%1000+1]`
t=0

while  true
do
read -p "请输入猜的价格(1-1000内的整数):" h
let t++
if  [ $h -eq $m ]
then
echo "恭喜你猜中了,商品价格是 $h 您一共猜了 $t 次"
exit
elif [ $h -gt $m ]
then
echo "您的价格猜高了"
else
echo "您的价格猜低了"
fi
done

 until:条件不成功执行(限定条件)

循环格式:

until 判断条件
do
命令序列
done

#计算1到100的和
#!/bin/bash
i=0
sum=0
until [ $i -gt 100]
do
sum=$[sum+i]
let  i++
done
echo sum=$sum

 

标签:脚本,do,shell,sum,echo,循环,done,100
From: https://www.cnblogs.com/chenjw0608/p/17849652.html

相关文章

  • Linux系统下shell的使用
    一、什么是shell文字操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理与操作系统之间的交互:等待你输入,向操作系统解释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从​​键盘......
  • for循环、for in循环和forEach循环
    当然,以下是for循环、forin循环和forEach循环在JavaScript中的基本用法示例:for循环:javascript//打印数字0到4for(leti=0;i<=4;i++){console.log(i);}在上述示例中,我们使用for循环从0开始,每次循环后将计数器i的值加1,直到i的值小于等于4为......
  • ###%%%%%%%%%%脚本的用法:
     ##准备测试文件:[root@zabbix-agentopt]#whilereadline;doecho${line%%*};done<stu.txt01oldboy1802lidao1703baojewery6604happyday905oldcao99##获取文件中的序号::::%从右边向左边删除:[root@zabbix-agentopt]#whilereadline;doecho${line%%*};done......
  • 队列和循环队列(ArrayQueueAndCircleQueue)
    队列数组队列1.初始化队列privateintmaxsize;//最大长度privateintfront;//指向队首的前一个位置privateintrear;//指向队尾privateint[]arr;publicArrayQueue(intmaxsize){this.maxsize=maxsize;arr=newint[maxsize];......
  • VMware虚拟机如何联网、Xshell连接Linux虚拟机
     VMware虚拟机联网1、首先,在VMware界面单击虚拟机,点击编辑虚拟机设置,将网络适配器中的网络连接改为NAT模式。如下图所示: 2、然后,开启虚拟机,以root用户登录,进入终端,输入命令ifconfig查看当前系统所用的网卡接口,找到ens33。如下图: 3、输入以下指令:vim /etc/sysco......
  • 实验2 C语言分支与循环基础应用编程
    实验任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>45#defineN56#defineN13747#defineN24658intmain(){9intnumber;10inti;11srand(time(0));12for(i=0;i<N;++i){13nu......
  • 系统监控命令的脚本(监控linux性能)
     ##查看剩余内存容量:[root@zabbix-agent~]#free-h|awk'/Mem/{print$4}'290M ##查看根分区的利用率(磁盘利用率)[root@zabbix-agent~]#df-h/|awk'/\//{print$5}'13%[root@zabbix-agent~]#df-h|awk'/\/$/{print$5}'13% ......
  • 11.17双向循环链表应用
     #include<bits/stdc++.h>usingnamespacestd;typedefstructf{intdata;f*prior;f*next;}node,*Node;voidbuild(Nodep){intn;cin>>n;while(n--){intx;cin>>x;Nodenow=newnode()......
  • 关于一类最优解存在长度为 $k$ 的循环节的问题
    灵感来源问题形式:给定长度为\(n\)的序列,要求选出一些位置,使这些位置满足限制条件\(T\),其中\(T\)可以表述为一个长度为\(k\)的环满足条件\(T'\),选出第\(i\)个位置的收益是\(f(i\bmodk)\),求最大收益。关键在于证明一个引理:最优解一定存在长度为\(k\)的循环节。证明......
  • JavaWeb--JSP脚本
     JSP的缺点     ......