shell循环控制语句介绍及使用
1、break,continue,exit,shift说明
break,continue,exit一般用于循环结构中控制循环的走向。
命令 | 说明 |
break n | n表示跳出循环的次数,如果省略n表示跳出整个循环 |
continue n | n表示退到第n层继续循环,如果省略n表示跳过本次循环进入下一次循环 |
exit n | 退出当前的shell程序,并返回n,n也可以省略 |
return | 用于返回一个退出值给调用的函数 |
shift | 用于将参数列表list左移指定次数,最左端的那个参数就从列表中删除,其后边的参数继续进入循环 |
2、break脚本实现
[root@localhost ~]# cat break1.sh
#!/bin/bash
for((i=0;i<=5;i++))
do
if [ $i -eq 3 ];then
break;
fi
echo $i
done
echo "ok"
#运行结果为:
[root@localhost ~]# bash break1.sh
0
1
2
ok
3、continue脚本实现
[root@localhost ~]# cat continue.sh
#!/bin/bash
for((i=0;i<=5;i++))
do
if [ $i -eq 3 ];then
continue;
fi
echo $i
done
echo "ok"
#运行结果为:
[root@localhost ~]# bash continue.sh
0
1
2
4
5
ok
4、exit脚本实现
[root@localhost ~]# cat exit.sh
#!/bin/bash
for((i=0;i<=5;i++))
do
if [ $i -eq 3 ];then
exit
fi
echo $i
done
echo "ok"
#运行结果为:
[root@localhost ~]# bash exit.sh
0
1
2
5、循环控制shift命令
shift命令用于将参数列表list左移指定次数,最左端的那个参数就从列表中删除,其后边的参数继续进入循环。
5.1、shift命令实例:创建指定的多个用户
#!/bin/bash
if [ $# -eq 0 ];then
echo "请在脚本后输入参数(例如:$0 arg1)"
exit 1
else
while [ -n "$1" ];do
useradd $1
echo 123|passwd --stdin $1
shift
done
fi
运行结果:
[root@localhost script]# bash if_while_shift.sh a1 a2 a3
更改用户 a1 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 a2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
更改用户 a3 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost script]#
分析:如果没有输入参数(参数的总数为0),提示错误并退出;反之,进入循环;若第一个参数不为空字符,则创建以第一个参数为名的用户,并移除第一个参数,将紧跟的参数左移作为第一个参数,直到没有第一个参数,退出。
5.2、打印直角三角形的字符
#!/bin/bash
while (($# > 0));do
echo "$*"
shift
done
运行结果:
[root@localhost script]# bash if_while_shift1.sh 1 2 3 4 5 6 7
1 2 3 4 5 6 7
2 3 4 5 6 7
3 4 5 6 7
4 5 6 7
5 6 7
6 7
7