天天看點

shell 特殊變量

位置變量

$0  擷取目前執行的shell腳本的檔案名,如果執行腳本帶路徑那麼就包括腳本路徑

<code>[root@XCN shell]</code><code># sh n.sh </code>

<code>n.sh</code>

<code>[root@XCN ~]</code><code># sh /shell/n.sh </code>

<code>/shell/n</code><code>.sh</code>

<code>[root@XCN shell]</code><code># sh `pwd`/n.sh</code>

<a href="https://s5.51cto.com/wyfs02/M02/99/2D/wKioL1lE6VOQrQ3wAABbP7bwXP0998.png-wh_500x0-wm_3-wmp_4-s_1472339245.png" target="_blank"></a>

$n  擷取目前執行的shell腳本的第n個參數值,n=1..9,當n為0時表示腳本的檔案名,如果n大于0,大括号括起來${10}

<code>腳本内容:</code>

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

<code>echo</code> <code>$1</code>

<code>[root@XCN shell]</code><code># sh p.sh xcn     #1個參數</code>

<code>xcn                                                                                                                  </code>

<code> </code> 

<code>[root@XCN shell]</code><code># sh p.sh xcn cainiao    #2個參數輸出的是第一個參數</code>

<code>xcn</code>

$*   擷取目前shell的所有參數,将所有的指令行參數視為單個字元串,相當于"$1$2$3".....注意與$#的區域

$#   擷取目前執行的shell腳本後面接的參數的總個數

<code>[root@XCN shell]</code><code># cat p.sh </code>

<code>echo</code> <code>$</code><code>#</code>

<code>[root@XCN shell]</code><code># sh p.sh {a..z}</code>

<code>a</code>

<code>26</code>

<code>企業應用:(控制使用者參數輸入的個數)當輸入參數不等于2成立輸出“muse two”,側不成立會輸出</code><code>"buchengli"</code>

<code>[root@XCN shell]</code><code># cat 1p.sh </code>

<code>[ $</code><code># -ne 2 ] &amp;&amp; {</code>

<code>echo</code> <code>"muse two"</code>

<code>exit</code> <code>1           </code><code>#值1是退出後$? 的值</code>

<code>}</code>

<code>echo</code> <code>"buchengli"</code>

<code>[root@XCN shell]</code><code># sh 1p.sh bai</code>

<code>muse two</code>

<code>[root@XCN shell]</code><code># sh 1p.sh bai shu</code>

<code>buchengli</code>

<code>[root@XCN shell]</code><code>#</code>

$@  這個程式的所有參數"$1" "$2" "$3" "...",這是将參數傳遞給其他程式的最佳方式,因為他會保留内嵌在每個參數裡的任何空白。

$*和$@的差別例子

$*   将所有的指令行所有參數視為單個字元串,等同于"$1$2$3","$*"

$@  将指令行每個參數視為單獨的字元串,等同于"$1" "$2" "$3".這是将參數傳遞給其他程式的最近方式,因為他會保留所有内嵌在每個參數裡的任何空白。

注意:上述差別僅在于加雙引号的時候,即"$*"與"$@"

shift  移動位置變量

2.程序狀态變量

$$    擷取目前shell的程序号

$!     執行上一個指令的PID

$?     擷取執行上一個指令的傳回值(0為成功,非零為失敗)#這個變量很常用

$_      在此之前執行的指令或腳本的最後一個參數

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