Shell脚本之for循环、while循环,if语句、case语句1. for循环
⼀般格式:
格式1:
for((条件))
do
动作
done
格式2:
for 变量名 in 范围
do
动作
done
实验:
##1. 输出数字:1-5
[root@localhost ~]# vim for01.sh
>>>####
#!/bin/bash
for NUM in {1..5}
do
echo $NUM
done
[root@localhost ~]# sh for01.sh
1
2
3
4
5
##2.将输出数字:1-6 并且间隔为2
[root@localhost ~]# vim for02.sh
>>>####
#!/bin/bash
for NUM in `seq 1 2 6` ## 2表⽰步长
do
echo $NUM
done
[root@localhost ~]# sh for02.sh
1
3
5
⽰例1:检测所有1-60的ip⽹络通信状态
[root@localhost mnt]# vim ip_check.sh
>>>>#
#!/bin/bash
for((i=1;i<=60;i++))
do
ping -c1 -w1 172.25.254.$i > /dev/null && echo 172.25.254.$i is UP || echo 172.25.254.$i is DOWN sleep 1
done
注释:
> /dev/null ##将冗余的输出信息导⼊到垃圾箱中
sleep 1 ##每秒刷新⼀次
&& ##表⽰若能与主机能进⾏通信则输出....UP
|| ##表⽰若不能与主机进⾏通信则输出....DOWN
[root@localhost mnt]# sh ip_check.sh
⽰例2:10s倒计时
[root@localhost mnt]# vim time.sh
>>>>#
#!/bin/bashlinux循环执行命令脚本
for((i=10;i>0;i--))
do
echo -n " After $i's is end "
echo -ne "\r"
sleep 1
done
注释:
\r ##表⽰回车:覆盖之前的输出(注意:必须加-e解析)
sleep 1 ##表⽰每秒刷新1次
[root@localhost mnt]# sh time.sh
练习1:⽤户以 分:秒 格式输⼊时间 进⾏倒计时
编写脚本:
[root@localhost mnt]# vim time_ms.sh
>>>>#
#!/bin/bash
read -p 'please input minute:' a ##⽤变量a来接收⽤户输⼊的分钟
read -p 'please input second:' b ##⽤变量b来接收⽤户输⼊的秒钟
[ "$b" -gt 60 ]&&{ ##判断输⼊的秒钟是否符合实际,⼀般秒位不超过为60即为⼀分钟(其实不做判断也可以的) echo "EROOR: please input a correct second!"
exit 1
}
c=$[$a*60+$b] ##将分钟和秒都化为以秒为单位;转换关系:⼀分钟等于60秒
for((;c>=0;c--))
do
m=$[$c/60] ##计算新的分钟
s=$[$c%60] ##计算新的秒钟
echo -n "Time is $m:$s "
echo -ne "\r" ##覆盖前⼀秒的输出信息
sleep 1 ##每秒刷新⼀次
done
执⾏脚本:
[root@localhost mnt]# sh time_ms.sh
[root@localhost mnt]# sh time_ms.sh
2. while循环
⼀般格式:
while 条件
do ##满⾜条件则执⾏动作
动作
done
实验:
[root@localhost ~]# vim while.sh
>>>####
while true ## 死循环,若没有外界条件的⼲扰,则会⼀直循环不停⽌do
echo -n `uptime`
echo -ne "\r" ## -e表⽰解析,-r表⽰回车,即覆盖上⼀秒的输出信息 sleep 1 ## 每秒刷新⼀次
done
[root@localhost ~]# sh while.sh
^C:37:17 up 58 min, 3 users, load average: 0.14, 0.05, 0.06
⽰例3:批量创建⽤户并给其设定密码为123
##⾮交互式设定⽤户密码
[root@localhost mnt]# echo "123" | passwd student --stdin
[root@localhost mnt]# ls /home
student
[root@localhost mnt]# sh user.sh
>>>>#
#!/bin/bash
USERNAME="westos"
i=1
while [ $i -le 10 ] ##当满⾜表达式时则执⾏do中的命令
do
useradd ${USERNAME}$i ##创建⽤户
echo "123" | passwd ${USERNAME}$i --stdin &> /dev/null ##⾮交互式设定⽤户密码 ((i++))
done
[root@localhost mnt]# sh user.sh
测试:
##检验⽤户是否创建成功
[root@localhost mnt]# ls /home/
student westos10 westos3 westos5 westos7 westos9
westos1 westos2 westos4 westos6 westos8
##检验密码是否设定成功
[root@localhost mnt]# su - westos1
[westos1@localhost ~]$ su - westos2
Password:
[westos2@localhost ~]$ exit
logout
[westos1@localhost ~]$ exit
logout
3.嵌套循环
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
使用ssh命令在远程主机上执行命令和脚本
下一篇 »
热门文章
-
excel文字递增函数公式
2025-02-08 -
数字递增公式
2025-02-08 -
notepad 正则变量运算
2025-02-08 -
C++regex库常用函数及实例
2025-02-08 -
js正则表达式之前瞻后顾与非捕获分组
2025-02-08 -
indesign正则数字和英文之间的空格
2025-02-08 -
C#匹配中文字符串的4种正则表达式分享
2025-02-08 -
PHP正则表达式匹配中文字符
2025-02-08 -
匹配中文汉字的正则表达式介绍
2025-02-08 -
Python正则表达式如何进行字符串替换
2025-02-08 -
orcl中用正则表达式
2025-02-08 -
sql正则表达式excel
2025-02-08 -
dataframe正则表达式
2025-02-08 -
postgress sql正则
2025-02-08 -
el-upload accept 正则表达式
2025-02-08 -
半小时 正则表达式
2025-02-08 -
判断科学计数法的正则
2025-02-08 -
根据url判断静态资源的方法
2025-02-08 -
Java正则表达式-匹配正负浮点数
2025-02-08 -
替换模糊匹配正则-hive
2025-02-08
最新文章
-
一种基于正则表达式的DBC文件解析及报文分析方法[发明专利]
2025-02-08 -
能被5整除的十进制整数的正规表达式
2025-02-08 -
大于0小于等于1的正则表达式
2025-02-08 -
linux grep 26个字母
2025-02-08 -
java pattern 正则表达式
2025-02-08 -
掌握文本编辑器中的搜索和替换技巧
2025-02-08
发表评论