shell循环

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

批量创建用户

复制代码

[root@server1 ~]# vim addUser.sh

#!/bin/bash
for i in `cat ~/name.txt`
do
        id $i &> /dev/null
        if [ $? -eq 0 ];then
        echo "${i}该用户已存在"
        else
        useradd $i
        echo "123"|passwd ${i} --stdin
        fi
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 直接退出脚本

 

posted @   hx_ky36  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示