for循環有三種結構:清單for循環,不帶清單for循環和類C風格for循環。
do和done之間的指令成為循環體,執行次數和list清單中常熟或字元串的個數相同。for循環,首相是将in後list的第一個常數或字元串複制給循環變量,然後執行循環體,以此執行list,最後執行done指令後的指令序列。
shell支援清單for循環使用略寫的計數方式,1~5的範圍用{1..5}表示,
shell中還支援按規定的步數進行跳躍的方式實作for循環,例如計算1~100内所有的奇數
一、清單for循環
<code>#!/bin/bash #!/bin/bash</code>
<code>for</code> <code>avrible1 </code><code>in</code><code>{1..5} </code><code>sum</code><code>=0</code>
<code>do</code> <code>for</code> <code>i </code><code>in</code> <code>{1..10..2} ; </code><code>do</code>
<code>echo</code> <code>"hello,welcome $avrible1 times!"</code> <code>echo</code> <code>$i </code>
<code>done</code> <code>done</code>
<code> </code>
<code>#!/bin/bash</code>
<code>for</code> <code>avr </code><code>in</code>
<code>二、不帶清單</code><code>for</code><code>循環</code>
<code>echo</code> <code>"number of</code>
<code>arguments is $</code><code>#"</code>
<code>echo</code> <code>"What you</code>
<code>input is: "</code>
<code>for</code> <code>argument </code><code>in</code>
<code>"$@"</code>
<code>do</code>
<code>echo</code>
<code>"$argument"</code>
<code>done</code>
<code>三、類C語言</code><code>for</code><code>循環</code>
<code>for</code> <code>((integer = 1;integer <=5; integer++))</code>
<code> </code><code>echo</code> <code>"$integer"</code>
for i in $(cat /tmp/xuexi/iplist);do ./batch.sh $i;done
4、for循環語句的嵌套使用
文法結構:
<code>#!/bin/bash</code>
<code>for</code> <code>變量1 </code><code>in</code> <code><條件清單></code>
<code> </code><code>do</code>
<code> </code><code>for</code> <code>變量2 </code><code>in</code> <code><條件清單></code>
<code> </code><code>do</code>
<code> </code><code>指令2</code>
<code> </code><code>done</code>
<code> </code><code>指令1</code>
關于for循環嵌套使用列印等腰三角形
<code>#!/bin/sh</code>
<code>read</code> <code>-p </code><code>"Please input a number:"</code> <code>num</code>
<code>read</code> <code>-p </code><code>"Please input the char:"</code> <code>char</code>
<code> </code><code>for</code> <code>((i=1; i<=num; i++));</code>
<code> </code><code>do</code>
<code> </code><code>for</code> <code>((j=num-i; j>0; j--));</code>
<code> </code><code>echo</code> <code>-n </code><code>' '</code>
<code> </code><code>done</code>
<code> </code><code>for</code> <code>((h=1; h<=((2*i-1)); h++))</code>
<code> </code><code>echo</code> <code>-n </code><code>"$char"</code>
<code> </code><code>echo</code>
<code> </code><code>done</code>
<code>root@node1 </code><code>shift</code><code>]</code><code># ./zsj1.sh </code>
<code>Please input a number:4</code>
<code>Please input the char:@</code>
<code> </code><code>@</code>
<code> </code><code>@@@</code>
<code> </code><code>@@@@@</code>
<code> </code><code>@@@@@@@</code>
在上述等腰三角形的列印過程中分類應用了三個for循環分别是,1、外層for循環用于控制列印三角形的行數,内層第一個for循環用于列印空格數,第三個則是控制字元char的輸出個數。三個for循環的使用将等腰三角形成功的列印出來。
注:{1..10..2}取奇數
$# 參數
$@ 腳本輸入的參數其歲$#的值的标下而變小,最小值為0
本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1840660