1. 程式人生 > 其它 >shell 指令碼中$0、$?、$!、$$、$*、$#、$@

shell 指令碼中$0、$?、$!、$$、$*、$#、$@

1. $$
Shell本身的PID(ProcessID)


2. $!
Shell最後執行的後臺Process的PID


3. $?
最後執行的命令的結束程式碼(返回值)


4. $-
使用Set命令設定的Flag一覽


5. $*
所有引數列表。如"$*"用「"」括起來的情況、以"$1 $2 … $n"的形式輸出所有引數。


6. $@
所有引數列表。如"$@"用「"」括起來的情況、以"$1" "$2" … "$n" 的形式輸出所有引數。


7. $#
新增到Shell的引數個數


8. $0
Shell本身的檔名


9.$1~$n
新增到Shell的各引數值。$1是第1引數、$2是第2引數…。

我們先寫一個簡單的指令碼,執行以後再解釋各個變數的意義

mkdir test.sh

指令碼內容如下:

#!/bin/bash

echo "number:$#"
echo "scname:$0"
echo "first :$1"
echo "second:$2"
echo "argume:$@"

儲存退出

wqa!

賦予指令碼執行許可權並執行

1.bash test.sh

2.chmod 755 test.sh
    ./test.sh

結果:

number:2
scname:./variable
first: aa
second:bb
argume:aa bb

結果分析
通過顯示結果可以看到:

  • $# 是傳給指令碼的引數個數
  • $0 是指令碼本身的名字
  • $1是傳遞給該shell指令碼的第一個引數
  • $2是傳遞給該shell指令碼的第二個引數
  • $@ 是傳給指令碼的所有引數的列表
故鄉明