天天看点

跳出循环与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