循环语法

for循环

如下脚本:

#!/bin/bash
for i in 1 3 5 7
do
         echo $i
         echo ok
done 

[root@linuxprobe ~]# sh a.sh
1
ok
3
ok
5
ok
7
ok

倒数五秒

[root@linuxprobe ~]# cat b.sh
#!/bin/bash
echo "准备倒数5秒:"
for i in $(seq 5 -1 1)
do
    echo -en "$i";sleep 1
done
echo -e "开始"
[root@linuxprobe ~]# sh b.sh
准备倒数5秒:
54321开始

数值运算时这种写法更简单 如果文件处理for in的语法更容易写。

break 和continue 跳出循环

break语句:(跳出循环)

  • 在for、while、until等循环语句中,用于跳出当前所在的循环体,执行循环体后的语句

continue语句:(跳出本次循环)

  • 在for、while、until等循环语句中,用于跳出循环体内余下的语句,重新判断条件以便执行下一次循环。

exit 退出脚本, 但是exit可以设置脚本返回值

 shell seq的用法

用于产生从某个数到另外一个数之间的所有整数
例一:
# seq 1 10
结果是1 2 3 4 5 6 7 8 9 10
例二:

#!/bin/bash
for i in `seq 1 10`;
do
echo $i;
done

或者用
for i in $(seq 1 10)
也可以

[root@linuxprobe ~]# for i in $(seq 1 10); do echo $i; done
1
2
3
4
5
6
7
8
9
10

位置变量
位置变量:$n ,但是大于9的位置参数要用{}括起来:${10}
位置变量的作用:其实就是传递参数到脚本里
$0 –》代表的是脚本自己的名字
(位置变量的最常用用法:bash 1.sh 变量1 变量2…)

预定义变量:
$#:命令行中位置变量的个数
$*:所有位置变量的内容(较少使用)
$@:所有位置变量的内容
$0:当前执行的进程/程序名
$$ :当前shell的PID值, echo $$; ps $$, 常用作临时变量的后缀
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出错
$RANDOM :随机数,可以作为临时文件名


while循环

while和until循环
while 后边跟命令 条件为真值时循环
until 后边跟命令 条件为假值时循环
更多用while做死循环

while循环注意为方括号[ ],且注意空格

[root@linuxprobe ~]# cat c.sh
#!/bin/sh
min=1
max=10
while [ $min -le $max ]
do
  echo $min
  min=`expr $min + 1`
done
[root@linuxprobe ~]# sh c.sh
1
2
3
4
5
6
7
8
9
10

双括号形式,内部结构有点像C的语法,注意赋值:i=$(($i+1))

[root@linuxprobe ~]# cat d.sh
#!/bin/sh
i=1
while(($i<50)); do
if(($i%4==0)); then
echo $i
fi
i=$(($i+1))
done
[root@linuxprobe ~]# sh d.sh
4
8
12
16
20
24
28
32
36
40
44
48

until循环

unti 循环和 while 循环恰好相反,当判断条件不成立时才进行循环,一旦判断条件成立,就终止循环

[root@linuxprobe ~]# cat e.sh
#!/bin/sh
x=1
until [ $x -ge 10 ];do
  echo $x
x=`expr $x + 1`
done
[root@linuxprobe ~]# sh e.sh
1
2
3
4
5
6
7
8
9

相当于 

[root@linuxprobe ~]# cat f.sh
#!/bin/sh
x=1
while [ ! $x -ge 10 ];do
  echo $x
x=`expr $x + 1`
done
[root@linuxprobe ~]# sh f.sh
1
2
3
4
5
6
7
8
9

猜你喜欢

转载自www.cnblogs.com/rookieeee/p/12622918.html