首页 > 系统相关 >shell循环

shell循环

时间:2024-05-14 18:32:00浏览次数:13  
标签:do shell 10 sum echo 循环 done

echo

echo -n   表示不换行输出
echo -e   表示输出转义符
常用的转义符
\r 光标移至行首,并且不换行
\s 当前shell的名称,如bash
\t 插入Tab键,制表符
\n 输出换行
\f 换行,但光标仍停留在原处
\ 表示插入"\"本身转义
\b 表示退格 不显示前一个字符
\c 抑制更多的输出或不换行
例如:

[root@server1 ~]# echo -n "Hello, ";echo "world"
Hello, world

[root@server1 ~]# echo -e "Hello\nworld"
Hello
world

 date

date查看当前系统时间

-d 你描述的日期,显示指定字符串所描述的时间,而非当前时间

%F 完整日期格式,等价于 %Y-%m-%d

% T 时间(24小时制)(hh:mm:ss)

 cal查看日期

 seq

 for

列表循环

for 变量名 in   {list}
do
    command
done
花括号{}和seq在for循环的应用:
for i in {1..50..2} 1-50的奇数


for i in {2..50..2} 1-50的偶数
for i in {10..1}  1-10倒序排列



for i in $(seq 10)  1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长

不带列表循环

for 变量名 
do
    command
done
例1:打印hello
第一种:
[root@server ~]# vim for2.sh 

#!/bin/bash
for i    
do
        echo hello
done

[root@server ~]# . for2.sh   
#没有给脚本传参所以执行了没有结果

[root@server ~]# . for2.sh a   
#把a赋值给变量i,i有值了它就开始执行do..done了
hello

C语言风格的for循环

for ((expr1;expr2;expr3))
do
       command
done

expr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出

sum=1   i2=2
sum+=i    等于   sum=sum+i  

#需要使用 let  命令

++    自身变量+1   
--  自身变量-1    
+=5    自身变量+5   
-=5    自身变量-5
*=5    自身变量*5
/=5    自身变量/5
%=5    自身变量%5
[root@server ~]# vim for3.sh
#!/bin/bash
for ((i=1;i<=10;i+=2))   //i=i+2
do
     echo $i
done

while

while  :
do


done
######求和###########
#!/bin/bash
i=0
sum=0
while [ $i -le 100 ]
do
let sum+=$i
let i+=2
done
echo $sum
###############批量建立用户##################################
#!/bin/bash
i=0
while [ "${i}" -le 20 ]
do
useradd stu${i}
echo "123456" |passwd --stdin stu${i} &>/dev/null
if [ $? -eq 0 ]
then
echo "用户 stu${i} 被建立"
else
echo "用户 stu${i} 建立失败"
fi
let i++
done
##############猜价格游戏##########################
#!/bin/bash
p=`echo $[RANDOM%1000+1]`
t=0

while true
do
read -p "请输入商品的价格1-1000:" num
let t++
if [ $num -eq $p ]
then
echo "恭喜你猜中了,实际价格是$p"
echo "您一共猜了${t}次"
exit 0
elif [ $num -gt $p ]
then
echo "您猜的价格高了" 
else
echo "您猜的价格低了"
fi
done

跳出循环

  • break跳出单个循环 break n 数字数字是几代表跳出n层循环

  • continue终止某次循环中的命令,但是不会完全终止命令

  • exit 直接退出脚本

 

标签:do,shell,10,sum,echo,循环,done
From: https://www.cnblogs.com/hxqwe/p/18191763

相关文章

  • shell编程规范与变量
    shell脚本基础1.shell概述shell脚本的概念将要执行的命令按顺序保存到一个文本文件给该文件可执行权限可结合各种shell控制语句以完成更复杂的操作shell应用应用场景重复性操作交互性操作批量事务处理服务运行状态监控定时任务执行应用场景shell的作用Linux系统......
  • shell条件语句
    一、测试文件测试testtest的语法test条件表达式[条件表达式]test选项文件-d:判断是否是目录(Directory)-f:判断是否是普通文件(File)-b:判断是否是块设备(block)-c:判断是否是字符设备-e:判断是否存在(Exist)-a:判断是否存在-r:判断是否有读的权限(Read)-w:判断......
  • shell运算符
    算术运算符点击查看详情运算符说明举例+加法expr$a+$b结果为30。-减法expr$a-$b结果为-10。*乘法expr$a\*$b结果为200。/除法expr$b/$a结果为2。%取余expr$b%$a结果为0。=赋值a=$b把变量b的值赋给a。==......
  • shell重定向与变量
    一、重定向与管道符重定向重定向:改变电脑的数据输出方向,默认是输出在屏幕上类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器交互式硬件设备标准输入:从该设备接收用户输入的数......
  • 多线程循环控制字段失效造成死循环的坑
    编程的时候遇到一个场景:A,B两个线程,B是一个while(flag),有个控制字段flag,刚开始是trueB会一直循环,A某个情况回把flag置为false,但是如果B的循环里什么都没干,就一直不退出,陷入死循环本来以为是哪里逻辑写错了,于是在B里面加入了一个printf,没想到结果就能正常退出了 ......
  • MYSQL存储过程-练习3 repeat循环
    repeat循环1DELIMITER$$23CREATEPROCEDURE`sp_repeat`()4BEGIN5DECLAREiINT;6SETi=1;7REPEAT8SELECTi;9SETi=i+1;10UNTILi>=511ENDREPEAT;12END$$1314DELIMITER;执行存储过程1mysql>callsp_repea......
  • shell流程控制
    判断fi[root@VM-12-15-centoshome]#vitest.sh#编写如下a=100b=100iftest$[a]-eq$[b];thenecho"true";fi#执行[root@VM-12-15-centoshome]#shtest.shtrueifelse[root@VM-12-15-centoshome]#vitest.sh#编写如下a=100b=101iftest$[a]......
  • MYSQL存储过程-练习4 loop循环
    创建存储过程1DELIMITER$$23CREATEPROCEDURE`sp_loop`()4BEGIN5DECLAREiINT;6SETi=1;7lp1:LOOP8SELECTi;9SETi=i+1;10IFi>5THEN11LEAVElp1;12ENDIF;13ENDLOOP;14END$$1516DELIMIT......
  • shell test命令
    数值案例1[root@VM-12-15-centoshome]#vitest.sh#编写如下num1=100num2=100iftest$[num1]-eq$[num2]thenecho'两个数相等!'elseecho'两个数不相等!'fi#执行[root@VM-12-15-centoshome]#shtest.sh两个数相等!案例2[root@VM-12-15-centos......
  • shell-cut,sed,awk
    一、cut:强大文本编辑处理工具,可以将文本按列进行划分的文本处理1、cut切割提取列cut文件或数据-d分隔符切割-f提取第x列2、cut切割提取字符cut文件或数据-c提取字符范围(n-,n-m,-n,n1,n2..)3、cut切割提取字节cut文件或数据-b提取字节范围......