如下脚本:
#!/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语句:(跳出循环)
continue语句:(跳出本次循环)
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和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
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
原文:https://www.cnblogs.com/rookieeee/p/12622918.html