版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 https://blog.csdn.net/SunnyYoona/article/details/73302312
1. 參數變量
特殊變量清單
變量 | 含義 |
---|---|
$0 | 目前腳本的檔案名 |
$n | 傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。 |
$# | 傳遞給腳本或函數的參數個數。 |
$* | 傳遞給腳本或函數的所有參數。 |
$@ | 傳遞給腳本或函數的所有參數。被雙引号(" ")包含時,與 $* 稍有不同,下面将會講到。 |
$? | 上個指令的退出狀态,或函數的傳回值。 |
$$ | 目前Shell程序ID。對于 Shell 腳本,就是這些腳本所在的程序ID。 |
Example:
#!/usr/bin/env bash
echo "腳本的檔案名: $0"
echo "腳本第一個參數 : $1"
echo "腳本第二個參數 : $2"
echo "腳本所有參數: $@"
echo "腳本所有參數: $*"
echo "腳本參數個數 : $#"
輸出:
xiaosi@yoona:~/code/openDiary/BaseOperation/src/main/sh$ sh sh_params.sh hotel vacation flight
腳本的檔案名: sh_params.sh
腳本第一個參數 : hotel
腳本第二個參數 : vacation
腳本所有參數: hotel vacation flight
腳本所有參數: hotel vacation flight
腳本參數個數 : 3
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB5688ef5ccc3a68fbec3df27fc43134b6%3Fmethod%3Ddownload%26read%3Dtrue#2-%E4%B8%8E-%E5%8C%BA%E5%88%AB 2. $* 與 $@ 差別
$* 和 $@ 都表示傳遞給函數或腳本的所有參數,但是兩者之間是有差別的:
(1) $*,$@ ,均以 "$1" "$2" … "$n" 的形式輸出
(2) "$", "$@" ,但是"$" 會将所有的參數作為一個整體,以"$1 $2 … $n"的形式輸出所有參數;而"$@" 會将各個參數分開,以"$1" "$2" … "$n" 的形式輸出所有參數
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "-------------------------"
echo "print each param from \$*"
for var in $*
do
echo "$var"
done
echo "-------------------------"
echo "print each param from \$@"
for var in $@
do
echo "$var"
done
echo "-------------------------"
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "-------------------------"
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done
$*= a b c
"$*"= a b c
$@= a b c
"$@"= a b c
-------------------------
print each param from $*
a
b
c
-------------------------
print each param from $@
a
b
c
-------------------------
print each param from "$*"
a b c
-------------------------
print each param from "$@"
a
b
c
https://note.youdao.com/md/preview/preview.html?file=%2Fyws%2Fapi%2Fpersonal%2Ffile%2FWEB5688ef5ccc3a68fbec3df27fc43134b6%3Fmethod%3Ddownload%26read%3Dtrue#3-%E9%80%80%E5%87%BA%E7%8A%B6%E6%80%81 3. $? 退出狀态
$? 可以擷取上一個指令的退出狀态。所謂退出狀态,就是上一個指令執行後的傳回結果。退出狀态是一個數字,一般情況下,大部分指令執行成功會傳回 0,失敗傳回 1。不過,也有一些指令傳回其他值,表示不同類型的錯誤。
sh xxx.sh
res=$?
if [[ ${res} -ne 0 ]]
then
echo "---------------------------------------腳本執行不成功"
exit 1
fi