Shell特殊變數

2022-03-07 04:32:41 字數 2454 閱讀 4034

$ 表示當前shell程序的id,即pid

$echo $$

執行結果

2934

特殊變數列表

變數含義

$0當前指令碼的檔名

$n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2。

$#傳遞給指令碼或函式的引數個數。

$*傳遞給指令碼或函式的所有引數。

$@傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。

$?上個命令的退出狀態,或函式的返回值。

$$當前shell程序id。對於 shell 指令碼,就是這些指令碼所在的程序id。

命令列引數

#!/bin/bash

echo

"file name: $0

"echo

"first parameter : $1

"echo

"first parameter : $2

"echo

"quoted values: $@

"echo

"quoted values: $*

"echo

"total number of parameters : $#

"

執行結果:

$./test.sh

zara ali

file name : ./test.sh

first parameter : zara

second parameter : ali

quoted values: zara ali

quoted values: zara ali

total number of parameters :

2

$* 和 $@ 的區別

$* 和 $@ 都表示傳遞給函式或指令碼的所有引數,不被雙引號(" ")包含時,都以"$1" "$2" … "$n" 的形式輸出所有引數。

但是當它們被雙引號(" ")包含時,"$*" 會將所有的引數作為乙個整體,以"$1 $2 … $n"的形式輸出所有引數;"$@" 會將各個引數分開,以"$1" "$2" … "$n" 的形式輸出所有引數。

#!/bin/bash

echo

"\$*=

" $*

echo

"\"\$*\"=""

$*"echo

"\$@="$@

echo

"\"\$@\"=""

$@"echo

"print each param from \$*

"for var in $*

doecho

"$var

"done

echo

"print each param from \$@

"for var in

$@do

echo

"$var

"done

echo

"print each param from \"\$*\"

"for var in"$*

"doecho

"$var

"done

echo

"print each param from \"\$@\"

"for var in"$@

"doecho

"$var

"done

執行 ./test.sh "a" "b" "c" "d",看到下面的結果:

$*=a b c d"$*

"=a b c d

$@=a b c d"$@

"=a b c d

print each param from $*abc

dprint each param from $@ab

cdprint each param from "$*

"a b c d

print each param from "$@

"abc

d

退出狀態

$? 可以獲取上乙個命令的退出狀態。所謂退出狀態,就是上乙個命令執行後的返回結果。退出狀態是乙個數字,一般情況下,大部分命令執行成功會返回 0,失敗返回 1。不過,也有一些命令返回其他值,表示不同型別的錯誤。

$./test.sh

zara ali

file name : ./test.sh

first parameter : zara

second parameter : ali

quoted values: zara ali

quoted values: zara ali

total number of parameters : 2$

echo $?

0$

shell 特殊變數

變數解釋 展開為 1c 2c 3c 4c 5c.其中字母c為變數 ifs 的第乙個字母,ifs預設為空.展開為 1 2 3 4 5 引數個數 上乙個命令的返回值 當前指令碼的程序id pid 上乙個後台執行程序的程序號.上乙個命令的最後乙個引數.下面的aaa bbb 為變數名 如果 aaa為空或未定...

Shell特殊變數

變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果29949 特殊變數列表 變數含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙...

shell 特殊變數

前面已經講到,變數名只能包含數字 字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。例如,表示當前shell程序的id,即pid,看下面的 echo 執行結果29949 特殊變數列表 變數 含義 0 當前指令碼的檔名 n傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個...