扩展
select用法
for循环
vim for.sh#! /bin/bash
for i in 'seq 1 5'; do
echo $i
done
脚本中的seq1 5表示从1到5的一个序列。
[root@aminglinux-128 ~]# sh for.shseq 1 5
for循环的基本结构格式:
for 变量名 in 循环的条件;do
command
done
这里的“循环的条件”可以是一组数字或者字符串(用一个或者多个空格隔开),也可以是一条命令的执行结果。
[root@aminglinux-128 ~]# for i in 1 2 3 a b; do echo $i; done1
2
3
a
b
‘’循环的条件‘’还可以引用系统命令的执行结果(如seq 1 5),但必须用反引号括起来。
[root@aminglinux-128 ~]# for file in 'ls';do echo $file; donels
while循环
while用来编写死循环的脚本,用来监控某项服务。
while 条件;do
command
done
示例如下
vim while.sh#! /bin/bash
a=5
while [ $a -ge 1 ]; do
echo $a
a=$[$a-1]
done
脚本执行结果
[root@aminglinux-128 ~]# sh while.sh5
4
3
2
1
可以用冒号代替循环条件,这样可以做到死循环。
while :;do
command
done
shell脚本中的函数
shell脚本中的函数就是先把一段代码整理到一个小单元中,并给这个小单元命名,当用到这段代码时直接调用这个小单元名字即可。有时脚本中的某段代码总是重复使用,如果写成函数,每次用到时直接用函数名代替即可。
写一个带有函数功能的shell脚本。
vim func.sh#! /bin/bash
function sum()
{
sum=$[$1+$2]
echo $sum
}
sum $1 $2
该脚本的执行结果
[root@aminglinux-128 ~]# sh func.sh 1 23
func.sh中的sum()为自定义的函数。在shell脚本中函数的格式如下:
function 函数名()
{
command1
command2
}
在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后。因为函数是要被调用的,如果还没有出现就被调用,肯定会出错。
shell脚本的中断和继续
break
break用在循环中,不管是for或者while都可以。在脚本中使用它,表示退出该层循环。它的上层循环不受影响。
[root@aminglinux-128 ~]# vim break.sh
#! /bin/bashfor i in 'seq 1 5'
do
echo $i
if [$i ==3 ]
then
break
fi
echo $i
done
echo aaaaaaa
脚本中,本意是要把1·5数值赋予i,当i等于3时,会跳出循环,后面的4和5都不会再执行。脚本执行结果:
[root@aminglinux-128 ~]# sh break.shseq 1 5
break.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa
continue
continue也是使用在循环中的,当在shell脚本中遇到continue时,结束的不是整个循环,而是本次循环。
[root@aminglinux-128 ~]# vim continue.sh
#! /bin/bashfor i in 'seq 1 5'
do
echao $i
if [$i ==3]
then
continue
fi
echo $i
done
echo $i
脚本执行结果
[root@aminglinux-128 ~]# sh continue.shcontinue.sh:行4: echao: 未找到命令
continue.sh:行5: [seq: 未找到命令
seq 1 5
seq 1 5
当i大于3时,出现了continue,所以结束本次循环,continue后面的语句不再执行,继续下一次循环。
exit
exit直接退出整个shell脚本
[root@aminglinux-128 ~]# vim exit.sh
#! /bin/bashfor i in 'seq 1 5'
do
echo $i
if [ $i == 3 ]
then
exit
fi
echo $i
done
echo aaaaaaa
脚本执行结果
[root@aminglinux-128 ~]# sh exit.shseq 1 5
exit.sh:行5: [seq: 未找到命令
seq 1 5
aaaaaaa
转载于:https://blog.51cto.com/13107353/2177087