真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

shellfor循環(huán)-創(chuàng)新互聯(lián)

除了 while 循環(huán)和 until 循環(huán),Shell 腳本還提供了 for 循環(huán),它更加靈活易用,更加簡(jiǎn)潔明了。Shell?for 循環(huán)有兩種使用形式,下面我們逐一講解。

創(chuàng)新互聯(lián)建站是一家專業(yè)提供鐵西企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、成都網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為鐵西眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

C語(yǔ)言風(fēng)格的 for 循環(huán)

C語(yǔ)言風(fēng)格的 for 循環(huán)的用法如下:

for((exp1; exp2; exp3))
do
statements
done

幾點(diǎn)說(shuō)明:

exp1、exp2、exp3 是三個(gè)表達(dá)式,其中 exp2 是判斷條件,for 循環(huán)根據(jù) exp2 的結(jié)果來(lái)決定是否繼續(xù)下一次循環(huán);
statements 是循環(huán)體語(yǔ)句,可以有一條,也可以有多條;
do 和 done 是 Shell 中的關(guān)鍵字。

它的運(yùn)行過(guò)程為:
1) 先執(zhí)行 exp1。

2) 再執(zhí)行 exp2,如果它的判斷結(jié)果是成立的,則執(zhí)行循環(huán)體中的語(yǔ)句,否則結(jié)束整個(gè) for 循環(huán)。

3) 執(zhí)行完循環(huán)體后再執(zhí)行 exp3。

4) 重復(fù)執(zhí)行步驟 2) 和 3),直到 exp2 的判斷結(jié)果不成立,就結(jié)束循環(huán)。

上面的步驟中,2) 和 3) 合并在一起算作一次循環(huán),會(huì)重復(fù)執(zhí)行,for 語(yǔ)句的主要作用就是不斷執(zhí)行步驟 2) 和 3)。

exp1 僅在第一次循環(huán)時(shí)執(zhí)行,以后都不會(huì)再執(zhí)行,可以認(rèn)為這是一個(gè)初始化語(yǔ)句。exp2 一般是一個(gè)關(guān)系表達(dá)式,決定了是否還要繼續(xù)下次循環(huán),稱為“循環(huán)條件”。exp3 很多情況下是一個(gè)帶有自增或自減運(yùn)算的表達(dá)式,以使循環(huán)條件逐漸變得“不成立”。

for 循環(huán)的執(zhí)行過(guò)程可用下圖表示:

shell for循環(huán)

下面我們給出一個(gè)實(shí)際的例子,計(jì)算從 1 加到 100 的和。

#!/bin/bash

sum=0

for ((i=1; i<=100; i++))
do
((sum += i))
done

echo "The sum is: $sum"

運(yùn)行結(jié)果:
The sum is: 5050

代碼分析:
1) 執(zhí)行到 for 語(yǔ)句時(shí),先給變量 i 賦值為 1,然后判斷 i<=100 是否成立;因?yàn)榇藭r(shí) i=1,所以 i<=100 成立。接下來(lái)會(huì)執(zhí)行循環(huán)體中的語(yǔ)句,等循環(huán)體執(zhí)行結(jié)束后(sum 的值為1),再計(jì)算 i++。

2) 第二次循環(huán)時(shí),i 的值為2,i<=100 成立,繼續(xù)執(zhí)行循環(huán)體。循環(huán)體執(zhí)行結(jié)束后(sum的值為3),再計(jì)算 i++。

3) 重復(fù)執(zhí)行步驟 2),直到第 101 次循環(huán),此時(shí) i 的值為 101,i<=100 不再成立,所以結(jié)束循環(huán)。

由此我們可以總結(jié)出 for 循環(huán)的一般形式為:

for(( 初始化語(yǔ)句; 判斷條件; 自增或自減 ))
do
? ? statements
done

for 循環(huán)中的三個(gè)表達(dá)式

for 循環(huán)中的 exp1(初始化語(yǔ)句)、exp2(判斷條件)和 exp3(自增或自減)都是可選項(xiàng),都可以省略(但分號(hào);必須保留)。

1) 修改“從 1 加到 100 的和”的代碼,省略 exp1:
#!/bin/bash

sum=0
i=1

for ((; i<=100; i++))
do
((sum += i))
done

echo "The sum is: $sum

"
可以看到,將i=1移到了 for 循環(huán)的外面。

2) 省略 exp2,就沒(méi)有了判斷條件,如果不作其他處理就會(huì)成為死循環(huán),我們可以在循環(huán)體內(nèi)部使用 break 關(guān)鍵字強(qiáng)制結(jié)束循環(huán):
#!/bin/bash

sum=0

for ((i=1; ; i++))
do
if(( i>100 )); then
break
fi
((sum += i))
done

echo "The sum is: $sum"

break 是 Shell 中的關(guān)鍵字,專門用來(lái)結(jié)束循環(huán),后續(xù)章節(jié)還會(huì)深入講解。

3) 省略了 exp3,就不會(huì)修改 exp2 中的變量,這時(shí)可在循環(huán)體中加入修改變量的語(yǔ)句。例如:

#!/bin/bash

sum=0

for ((i=1; i<=100; ))
do
((sum += i))
((i++))
done

echo "The sum is: $sum"

4) 最后給大家看一個(gè)更加極端的例子,同時(shí)省略三個(gè)表達(dá)式:

#!/bin/bash

sum=0
i=0

for (( ; ; ))
do
if(( i>100 )); then
break
fi
((sum += i))
((i++))
done

echo "The sum is: $sum"

這種寫法并沒(méi)有什么實(shí)際意義,僅僅是為了給大家做演示。

Python?風(fēng)格的 for in 循環(huán)

Python 風(fēng)格的 for in 循環(huán)的用法如下:

for?variable in value_list
do
statements
done

variable 表示變量,value_list 表示取值列表,in 是 Shell 中的關(guān)鍵字。

in value_list 部分可以省略,省略后的效果相當(dāng)于 in $@,本文末尾的「value_list 使用特殊變量」將會(huì)詳細(xì)講解。

每次循環(huán)都會(huì)從?value_list 中取出一個(gè)值賦給變量?variable,然后進(jìn)入循環(huán)體(do 和 done 之間的部分),執(zhí)行循環(huán)體中的?statements。直到取完?value_list 中的所有值,循環(huán)就結(jié)束了。

Shell for in 循環(huán)舉例:

?
#!/bin/bash

sum=0

for n in 1 2 3 4 5 6
do
echo $n
((sum+=n))
done

echo "The sum is "$sum

運(yùn)行結(jié)果:
1
2
3
4
5
6
The sum is 21

對(duì)?value_list 的說(shuō)明

取值列表 value_list 的形式有多種,你可以直接給出具體的值,也可以給出一個(gè)范圍,還可以使用命令產(chǎn)生的結(jié)果,甚至使用通配符,下面我們一一講解。

1) 直接給出具體的值

可以在 in 關(guān)鍵字后面直接給出具體的值,多個(gè)值之間以空格分隔,比如1 2 3 4 5、"abc" "390" "tom"等。

上面的代碼中用一組數(shù)字作為取值列表,下面我們?cè)傺菔疽幌掠靡唤M字符串作為取值列表:

?
#!/bin/bash

for i in "abc" "123" "qwe" "我愛你"
do
echo $i
done
運(yùn)行結(jié)果:
abc

123

qwe

我愛你

2) 給出一個(gè)取值范圍

給出一個(gè)取值范圍的具體格式為:

{start..end}

start 表示起始值,end 表示終止值;注意中間用兩個(gè)點(diǎn)號(hào)相連,而不是三個(gè)點(diǎn)號(hào)。根據(jù)筆者的實(shí)測(cè),這種形式只支持?jǐn)?shù)字和字母。

例如,計(jì)算從 1 加到 100 的和:

?
#!/bin/bash

sum=0

for n in {1..100}
do
((sum+=n))
done

echo $sum

運(yùn)行結(jié)果:
5050

再如,輸出從 A 到 z 之間的所有字符:

?
#!/bin/bash

for c in {A..z}
do
printf "%c" $c
done

輸出結(jié)果:
ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz

可以發(fā)現(xiàn),Shell 是根據(jù)?ASCII?碼表來(lái)輸出的。

3) 使用命令的執(zhí)行結(jié)果

使用反引號(hào)``或者$()都可以取得命令的執(zhí)行結(jié)果,我們?cè)凇禨hell變量》一節(jié)中已經(jīng)進(jìn)行了詳細(xì)講解,并對(duì)比了兩者的優(yōu)缺點(diǎn)。本節(jié)我們使用$()這種形式,因?yàn)樗蝗菀桩a(chǎn)生混淆。

例如,計(jì)算從 1 到 100 之間所有偶數(shù)的和:

?
#!/bin/bash

sum=0

for n in $(seq 2 2 100)
do
((sum+=n))
done

echo $sum

運(yùn)行結(jié)果:
2550

seq 是一個(gè)?Linux 命令,用來(lái)產(chǎn)生某個(gè)范圍內(nèi)的整數(shù),并且可以設(shè)置步長(zhǎng),不了解的讀者請(qǐng)自行百度。seq 2 2 100表示從 2 開始,每次增加 2,到 100 結(jié)束。

再如,列出當(dāng)前目錄下的所有 Shell 腳本文件:

?
#!/bin/bash

for filename in $(ls *.sh)
do
echo $filename
done

運(yùn)行結(jié)果:
demo.sh
test.sh
abc.sh

ls 是一個(gè)?Linux?命令,用來(lái)列出當(dāng)前目錄下的所有文件,*.sh表示匹配后綴為.sh的文件,也就是 Shell 腳本文件。

4) 使用 Shell 通配符

Shell 通配符可以認(rèn)為是一種精簡(jiǎn)化的正則表達(dá)式,通常用來(lái)匹配目錄或者文件,而不是文本,不了解的讀者請(qǐng)猛擊《Linux Shell 通配符(glob 模式)》。

有了 Shell 通配符,不使用 ls 命令也能顯示當(dāng)前目錄下的所有腳本文件,請(qǐng)看下面的代碼:

?
#!/bin/bash

for filename in *.sh
do
echo $filename
done

運(yùn)行結(jié)果:
demo.sh
test.sh
abc.sh

?

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


分享題目:shellfor循環(huán)-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/dogehs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部