天天看點

let與expr指令的用法與實戰案例

let指令的用法

格式:

let 指派表達式

【注】let指派表達式功能等同于:(指派表達式)

例子:給自變量i加8

<code>[root@XCN ~]</code><code># i=2</code>

<code>[root@XCN ~]</code><code># let i=i+8</code>

<code>[root@XCN ~]</code><code># echo $i</code>

<code>10</code>

<code>[root@XCN ~]</code><code># i=i+8   #去掉let定義</code>

<code>i+8      </code><code>#輸出的結果</code>

<code>提示:</code><code>let</code> <code>i=i+8等同于((i=i+8)),但後者效率更高</code>

expr指令的用法:

expr指令一般用于整數值,但也可用于字元串,用來表達式變量的值,同時expr也是一個手工指令行電腦。

文法:expr expression

<code>[root@XCN ~]</code><code># expr 2 + 2</code>

<code>4</code>

<code>[root@XCN ~]</code><code># expr 2 - 2 </code>

<code>0</code>

<code>[root@XCN ~]</code><code># expr 2 * 2 </code>

<code>expr</code><code>: syntax error</code>

<code>[root@XCN ~]</code><code># expr 2 \* 2  #*号用/來轉義</code>

提示: 

注意:運算符左右都有空格

使用乘号時,必須用反斜線屏蔽其特定含義。因為shell可能會誤解星号的含義

增量計數:

expr在循環中可用于增量計算。首先,循環初始化為0,然後循環值加1,反引号的用法為指令替代,最基本的一種是從(expr)指令接受輸出并将之放入循環變量。

例:給自變量i加1

<code>[root@XCN ~]</code><code># i=0</code>

<code>[root@XCN ~]</code><code># i=`expr $i + 1`</code>

<code>1</code>

expr$[$a+$b]表達式形式,其中$a$b可為整數值

<code>[root@XCN ~]</code><code># expr $[2+3]</code>

<code>5</code>

<code>[root@XCN ~]</code><code># expr $[2*3] </code>

<code>6</code>

<code>[root@XCN ~]</code><code># expr $[2**3]</code>

<code>8</code>

<code>[root@XCN ~]</code><code># expr $[2/3]  </code>

<code>[root@XCN ~]</code><code># expr $[2%3] </code>

<code>2</code>

<code>[root@XCN ~]</code><code># a=5        </code>

<code>[root@XCN ~]</code><code># b=6</code>

<code>[root@XCN ~]</code><code># expr $[$a+$b]</code>

<code>11</code>

<code>#expr将其後的串解釋為表達式并計算其值,運算符前後需有空格</code>

expr 特殊用法:

expr判斷擴充名腳本

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

<code>if</code> <code>expr</code> <code>"$1"</code> <code>: </code><code>".*\.pub"</code> <code>&amp;&gt;</code><code>/dev/null</code>  <code>#判斷傳遞參數擴充名是否為pub</code>

<code>then</code>

<code>    </code><code>echo</code> <code>"you are using $1"</code>

<code>else</code>

<code>    </code><code>echo</code> <code>"pls use *.pub file"</code>

<code>fi</code>

<code>  </code> 

<code> </code><code>#expr id_dsa.pub:`.*\.pub`,比對*.pub格式的檔案如果是則為真。離:</code>

expr判斷是非整數

#!/bin/bash

<code>expr</code> <code>1 + $1 &amp;&gt;</code><code>/dev/null</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ]</code>

<code>  </code><code>echo</code> <code>"zhengshu"</code>

<code>  </code><code>echo</code> <code>"feizhengshu"</code>

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