1. 程式人生 > >Shell指令碼中$0、$?、$!、$$、$*、$#、[email protected]等的意義

Shell指令碼中$0、$?、$!、$$、$*、$#、[email protected]等的意義

變數說明

$$
Shell本身的PID(ProcessID)
$!
Shell最後執行的後臺Process的PID
$?
最後執行的命令的結束程式碼(返回值)
$-
使用Set命令設定的Flag一覽
$*
所有引數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。
[email protected]
所有引數列表。如"[email protected]"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。
$#
新增到Shell的引數個數
$0
Shell本身的檔名
$1~$n
新增到Shell的各引數值。$1是第1引數、$2是第2引數…。

指令碼舉例

我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義
# touch variable
# vi variable
指令碼內容如下:
#!/bin/sh
echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:
[email protected]
"
儲存退出
賦予指令碼執行許可權
# chmod +x variable
執行指令碼
# ./variable aa bb
number:2
scname:./variable
first: aa
second:bb
argume:aa bb

結果分析

通過顯示結果可以看到:
$# 是傳給指令碼的引數個數
$0 是指令碼本身的名字
$1是傳遞給該shell指令碼的第一個引數
$2是傳遞給該shell指令碼的第二個引數
[email protected] 是傳給指令碼的所有引數的列表