循环结构
for
格式:
for var_name in value1 value2value3....valuen
do
commond
done
作用:将var_name在value1 value2value3....valuen循环遍历,每遍历一次执行一次commond,遍历完后,循环结束
例:遍历1到5
3 for i in 1 2 3 4 5
4 do
5 echo -n "$i "
6 done
7 echo
C式的for循环:
for ((i = 0 ; i < 6 ; i ++))
do
commond
done
for ((i = 5 ; i > 0 ;i--))
do
commond
done
对于值比较多,有规律的话,采用序列的方式表达:
格式:
for var_name in $(seq start_value step_value ned_value)
do
commond
done
例:遍历
3 #for i in $(seq 0 2 10)
4 for i in `seq 0 2 10`
5 do
6 echo -n "$i "
7 done
8 echo
产生一个1到100的序列循环:
9 for i in `seq 10`
10 do
11 echo -n "$i "
12 done
13 echo
产生一个5到20的序列循环:
14 for i in `seq 5 20`
15 do
16 echo -n "$i "
17 done
18 echo
产生一个5到20的序列循环,且每次增加5:
14 for i in `seq 5 20`
15 do
16 echo -n "$i "
17 done
18 echo
对文件操作
例:遍历/etc下的文件
3 for i in `ls /etc/`
4 do
5 echo $i
6 done
练习:遍历1+2+3+...+100的值
练习:打印99乘法表
-----------------------------------------
while 循环
循环次数不确定,或者死循环等我们可以用while
格式:
while [ condition ]
do
commond
done
作用:判断condition 是否成立,成立执行commond,打印完后,再回到while处,进行再次判断condition是否成立,只有condition不成立的条件下,才会退出循环
例:遍历1+2+3+...+100的值
练习:利用while循环方式创建3个用户,用户名和密码手工提示输入
-----------------------------------------
死循环:
大多数的情况下,我们是要避免一些死循环,但是处于一些特定的目的,我们会可以的构造一些死循环,如监控
写死循环的应注意两点:
1、当条件符合一个条件时,我们可以退出来。
2、如果一直无需退出,必要的时候有sleep语句。
构造一个死循环:
while true
do
commond
done
前面一个例子,监测vsftpd服务,没有启动,我们就启动它,启动就不管了。
while true
do
if ! netstat -tunlp |grep -wvsftpd > /dev/null
then
service vsftpd start >/dev/null
fi
sleep 5
done
------------------------------------------
循环嵌套:
循环里面包含循环。
如:
while []
do
while []
do
commond
done
done
打印一个三角形
*
* *
* * *
* * * *
* * * * *
--------------------------------------
循环控制语句
break:
忽略掉后面的所有语句,跳出循环
continue:
忽略掉后面的所有语句,重新开始新一轮的循环。
例:利用while循环创建3个用户,用户名和密码手工输入,输入用户名时要判断用户是否存在,如果存在要重新输入,密码要输入两次,如果两次输入的不一致,要重新输入。
打印一个空心三角形
*
* *
* *
* *
* *
* * * * *
-------------------------------------------
函数:
把可以重复使用的代码独立,抽象出来,用一个名字将其封装起来。
定义:
function name(){
}
或者
name(){
}
函数使用的时候先定义,再使用。
例:
用函数实现,打印空三角形。
------------------------------
数组:
定义:
a=(1 2 3 a b c "helleoworld")
a[2]="123"
a=([0]="he"[4]="who")
数组元数的访问:
echo ${a[0]} 访问第一个元素
echo ${a[*]} 访问所有元素
echo ${#a[*]} 获取数组元素的个数
复制元数
b=(${a[*]})
---------------------------------------
随机数:
产生一个随机数:echo$RANDOM
产生一个0到100的随机数:echo $[RANDOM%101]
产生一个50到100的随机数:echo $[RANDOM%51 +50]
例:产生随机码
要求:随机码长度为5
有效字符 字符 数字 一些特殊符号
shell入门(2)
最新推荐文章于 2022-10-22 21:44:12 发布