如果您從事過C語(yǔ)言編程方面的工作,那么您可能會(huì)對(duì)bash shell中for命令的工作方式有點(diǎn)驚奇。在C語(yǔ)言中, for循環(huán)通常定義一個(gè)變量,然后這個(gè)變量會(huì)在每次迭代時(shí)自動(dòng)改變。通常程序員會(huì)將這個(gè)變量用作計(jì)數(shù)器,并在每次迭代中讓計(jì)數(shù)器增一或減一。bash的for命令也提供了這個(gè)功能。今天,南昌網(wǎng)絡(luò)公司小編重點(diǎn)教大家如何在bash shell腳本中使用C語(yǔ)言風(fēng)格的for命令,下面就一起跟隨小編的步伐來(lái)看看!
C語(yǔ)言的for命令有一個(gè)用來(lái)指明變量的特定方法,一個(gè)必須保持成立才能繼續(xù)迭代的條件, 以及另一個(gè)在每個(gè)迭代中改變變量的方法。當(dāng)指定的條件不成立時(shí),for循環(huán)就會(huì)停止。條件等式通過標(biāo)準(zhǔn)的數(shù)學(xué)符號(hào)定義。比如,考慮下面的C語(yǔ)言代碼:
for (i = 0; i < 10; i++)
{
printf("The next number is %dn", i);
}
這段代碼產(chǎn)生了一個(gè)簡(jiǎn)單的迭代循環(huán),其中變量i作為計(jì)數(shù)器。第一部分將一個(gè)默認(rèn)值賦給該變量。中間的部分定義了循環(huán)重復(fù)的條件。當(dāng)定義的條件不成立時(shí),for循環(huán)就停止迭代。 后一部分定義了迭代的過程。在每次迭代之后,后一部分中定義的表達(dá)式會(huì)被執(zhí)行。在本例中,i變量會(huì)在每次迭代后增一。
bash shell也支持一種for循環(huán),它看起來(lái)跟C語(yǔ)言風(fēng)格的for循環(huán)類似,但有一些細(xì)微的不同,其中包括一些讓shell腳本程序員困惑的東西。以下是bash中C語(yǔ)言風(fēng)格的for循環(huán)的基本格式。
for (( variable assignment ; condition ; iteration process ))
C語(yǔ)言風(fēng)格的for循環(huán)的格式會(huì)讓bash shell腳本程序員摸不著頭腦,因?yàn)樗褂昧薈語(yǔ)言風(fēng)格的變量引用方式而不是shell風(fēng)格的變量引用方式。C語(yǔ)言風(fēng)格的for命令看起來(lái)如下:
for (( a = 1; a < 10; a++ ))
注意,有些部分并沒有遵循bash shell標(biāo)準(zhǔn)的for命令:
1、變量賦值可以有空格;
2、條件中的變量不以美元符開頭;
3、迭代過程的算式未用expr命令格式。
shell開發(fā)人員創(chuàng)建了這種格式以更貼切地模仿C語(yǔ)言風(fēng)格的for命令。這雖然對(duì)C語(yǔ)言程序員來(lái)說很好,但也會(huì)把專家級(jí)的shell程序員弄得一頭霧水。在腳本中使用C語(yǔ)言風(fēng)格的for循環(huán)時(shí)要小心。
以下是在bash shell程序中使用C語(yǔ)言風(fēng)格的for命令的一個(gè)例子,大家認(rèn)真看一下:
$ cat test8
#!/bin/bash
# testing the C-style for loop
for (( i=1; i <= 10; i++ ))
do
echo "The next number is $i"
done
$ ./test8
The next number is 1
The next number is 2
The next number is 3
The next number is 4
The next number is 5
The next number is 6
The next number is 7
The next number is 8
The next number is 9
The next number is 10
$
for循環(huán)通過定義好的變量(本例中是變量i)來(lái)迭代執(zhí)行這些命令。在每次迭代中,$i變量包含了for循環(huán)中賦予的值。在每次迭代后,循環(huán)的迭代過程會(huì)作用在變量上,在本例中,變量增一。
以上就是南昌網(wǎng)絡(luò)公司小編為大家介紹的如何在bash shell腳本中使用C語(yǔ)言風(fēng)格的for命令的方法,是不是感覺很簡(jiǎn)單呢?如果大家還有哪些不明白的地方,可隨時(shí)來(lái)電和我們聯(lián)系,百恒專業(yè)為您解答!