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