常用到的循环有for循环和while循环。
- for循环
[[email protected] sbin]# cat for.sh #! /bin/bash for i in `seq 1 5`; do echo $i done
脚本中的 seq 1 5
表示从1到5的一个序列。你可以直接运行这个命令试下。脚本执行结果为:
[[email protected] sbin]# sh for.sh 1 2 3 4 5
通过这个脚本就可以看到for循环的基本结构:
for 变量名 in 循环的条件; do command done
这里的 “循环的条件” 可以写成一组字符串或者数字(用1个或者多个空格隔开), 也可以是一条命令的执行结果:
[[email protected] sbin]# for i in 1 2 3 a b; do echo $i; done 1 2 3 a b
也可以写引用系统命令的执行结果,就像那个 seq 1 5
但是需要用反引号括起来:
[[email protected] sbin]# for file in `ls`; do echo $file; done case.sh first.sh for.sh if1.sh if2.sh if3.sh option.sh read.sh sum.sh variable.sh
- while循环
[[email protected] sbin]# cat while.sh #! /bin/bash a=5 while [ $a -ge 1 ]; do echo $a a=$[$a-1] done
while 循环格式也很简单:
while 条件; do command done
上例脚本的执行结果为:
[[email protected] sbin]# sh while.sh 5 4 3 2 1
另外你可以把循环条件拿一个冒号替代,这样可以做到死循环,常常这样写监控脚本:
while :; do command sleep 3 doneshell脚本中的函数函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可。有时候脚本中的某段代码总是重复使用,如果写成函数,每次用到时直接用函数名代替即可,这样就节省了时间还节省了空间。
[[email protected] sbin]# cat func.sh #! /bin/bash function sum() { sum=$[$1+$2] echo $sum } sum $1 $2
执行结果如下:
[[email protected] sbin]# sh func.sh 1 2 3
func.sh中的 sum() 为自定义的函数,在shell脚本函数的格式为:
function 函数名() { command }
在shell脚本中,函数一定要写在最前面,不能出现在中间或者最后,因为函数是要被调用的,如果还没有出现就被调用,肯定是会出错的。
时间: 2024-12-13 19:39:46