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 @ 2024-05-14 18:24  hx_ky36  阅读(3)  评论(0编辑  收藏  举报