天天看點

跳出循環與shift左移參數的應用

break和continue操作對于跳出目前操作月目前循環的差別

一、break和continue的應用于循環操作中,而break能夠使目前語句退出,而continue則僅是退出目前操作并進入下次循環。

執行個體:

<code>#!/bin/bash</code>

<code>while</code> <code>true</code>

<code>do</code>

<code>echo</code> <code>"******************************"</code>

<code>echo</code> <code>"**   請選擇一下可操作選項   **"</code>

<code>echo</code> <code>"**    1)複制        **"</code>

<code>echo</code> <code>"**    2)删除        **"</code>

<code>echo</code> <code>"**    3)備份        **"</code>

<code>echo</code> <code>"**    4)退出        **"</code>

<code>read</code> <code>-p </code><code>"逆選擇的操作是:"</code> <code>sel</code>

<code>        </code><code>case</code> <code>$sel </code><code>in</code>

<code>                </code><code>1)</code>

<code>                </code><code>echo</code> <code>"接下來的操作是複制"</code>

<code>                </code><code>continue</code>

<code>                </code><code>;;</code>

<code>                </code><code>2)</code>

<code>                </code><code>echo</code> <code>"接下來的操作是删除"</code>

<code>                </code><code>3)</code>

<code>                </code><code>echo</code> <code>"接下來的操作是備份"</code>

<code>                </code><code>4)</code>

<code>                </code><code>echo</code> <code>"接下來的操作是退出目前操作"</code>

<code>                </code><code>break</code>

<code>                </code><code>*)</code>

<code>                </code><code>echo</code> <code>"error.$sel不是可用操作,請輸入[1|2|3|4]"</code>

<code>                </code><code>esac</code>

<code>done</code>

<code>運作結果</code>

<code>[root@node1 </code><code>break</code><code>]</code><code># sh bread.sh </code>

<code>******************************</code>

<code>**   請選擇一下可操作選項   **</code>

<code>**    1)複制        **</code>

<code>**    2)删除        **</code>

<code>**    3)備份        **</code>

<code>**    4)退出        **</code>

<code>逆選擇的操作是:2</code>

<code>接下來的操作是删除</code>

二、利用shift參數左移指令做乘法器

shift左移指令是指,參數序列在每次執行後向左移動以為,即$#的值減1,用于分别處理每個參數,移除去的參數将不能再重複使用。例如下列代碼的功能是制作一個乘法器,具體代碼如下。

<code>if</code> <code>[ $</code><code># -le 0 ] ; then</code>

<code>        </code><code>echo</code> <code>"err:NOT enough paremeter"</code>

<code>        </code><code>exit</code> <code>122</code>

<code>fi</code>

<code>accu=1</code>

<code>while</code> <code>[ $</code><code># -gt 0 ]</code>

<code>        </code><code>((accu=accu\*$1))</code>

<code>shift</code>

<code>echo</code> <code>$accu</code>

<code>root@node1 </code><code>shift</code><code>]</code><code># chmod u+x ./cfq.sh </code>

<code>[root@node1 </code><code>shift</code><code>]</code><code># ./cfq.sh 2 3 4</code>

<code>24</code>

特殊符号:

$# 是傳給腳本的參數個數

$0 是腳本本身的名字

$1 是傳遞給該shell腳本的第一個參數

$2 是傳遞給該shell腳本的第二個參數

$@ 是傳給腳本的所有參數的清單

$* 是以一個單字元串顯示所有向腳本傳遞的參數,與位置變量不同,參數可超過9個

$$ 是腳本運作的目前程序ID号

$? 是顯示最後指令的退出狀态,0表示沒有錯誤,其他表示有錯誤

本文轉自 CARYFLASH 51CTO部落格,原文連結:http://blog.51cto.com/maoxiaoxiong/1840933