廣州網(wǎng)站推廣多少錢重慶seo網(wǎng)絡(luò)推廣關(guān)鍵詞
Linux shell編程中的until語句,在功能上與其它編程語言一致,但在結(jié)構(gòu)與其它編程語言又不太一樣。在大多數(shù)編程語言中,until語句的循環(huán)條件表達(dá)式一般位于循環(huán)體語句的后面,但是在Linux shell編程中,until語句的循環(huán)條件表達(dá)式與for語句和while一樣,位于循環(huán)體語句的前面。
一、數(shù)字條件循環(huán)類
我們繼續(xù)以for循環(huán)語句和while循環(huán)語句中的例子,計(jì)算 從1到10與2的乘積?并輸出。?
(一)在zsh命令行成功執(zhí)行
# csdn @ edu in ~ [20:26:26]?
$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done?
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20# csdn @ edu in ~ [20:27:06]?
$?
(二)在bash命令行成功執(zhí)行
# csdn @ edu in ~ [20:27:06]?
$ exec bash
[csdn ~]$ i=1; until [ ! $i -le 10 ]; do echo "$i * 2 = $(expr $i \* 2)"; i=$(expr $i + 1); done
1 * 2 = 2
2 * 2 = 4
3 * 2 = 6
4 * 2 = 8
5 * 2 = 10
6 * 2 = 12
7 * 2 = 14
8 * 2 = 16
9 * 2 = 18
10 * 2 = 20
[csdn ~]$?
二、字符條件循環(huán)類
我們使用的實(shí)例跟前面探討的while循環(huán)語句中的一樣,先定義字符串s=abcd0,初始化循環(huán)變量i,然后從i開始截取字符串s值并輸出,直到截取的字符串為0時(shí)結(jié)束循環(huán)。
(一)在bash中執(zhí)行成功
[csdn ~]$ s=abcd0; i=0; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
abcd0
bcd0
cd0
d0
[csdn ~]$?
(二)在zsh命令行執(zhí)行不成功
# csdn @ edu in ~ [22:36:44]?
$ s=abcd0; i=1; until [[ ! ${s:i} != '0' ]] ; do echo ${s:i}; let i++; done
zsh: unrecognized modifier `i'
?
與while循環(huán)語句一樣,這個(gè)實(shí)例也在zsh命令行同樣執(zhí)行不成功。
三、無限循環(huán)
與for語句、while語句一樣, until語句也可以實(shí)現(xiàn)無限循環(huán)。
下面的實(shí)例跟前面探討的while循環(huán)語句中的一樣,我們用無限循環(huán)每隔30秒顯示提示信息?press Ctrl+C to exit,在用戶按下Ctrl+C后結(jié)束循環(huán)。
(一)用false作為循環(huán)條件表達(dá)式
1.在zsh命令行執(zhí)行成功?
# csdn @ edu in ~ [22:48:08]?
$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# csdn @ edu in ~ [22:49:49] C:130
$?
?
2.在bash命令行執(zhí)行成功?
[csdn ~]$ until false; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C
[csdn ~]$?
?
(二)用 ! :?作為循環(huán)條件表達(dá)式
1.在zsh命令行執(zhí)行成功?
# csdn @ edu in ~ [22:49:49] C:130
$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
press Ctrl+C to exit
^C% ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?# csdn @ edu in ~ [22:55:55] C:130
$?
2.在bash命令行執(zhí)行成功?
[csdn ~]$ until ! : ; do echo 'press Ctrl+C to exit'; sleep 30s; done
press Ctrl+C to exit
^C
[csdn ~]$?
四、總結(jié)
至此我們學(xué)習(xí)了Linux shell編程中的for、while、until三個(gè)循環(huán)語句,相對來說,for語句格式更靈活,比如支持 in?表達(dá)試,所以應(yīng)用也相對更廣泛。