位置變量
$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 ] && {</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