shell 中 $ 的各種含義

https://blog.csdn.net/dujidan/article/details/115396653

執(zhí)行一段命令

execCommand() {
    result=$(eval $@)
}

execCommand "curl -F 'key=${key}' http://www.xxx.com/api/"
echo "result=${result}"

對應(yīng)含義

$0: 腳本本身文件名稱
$1: 命令行第一個參數(shù),$2為第二個,以此類推
$*: 所有參數(shù)列表
$@: 所有參數(shù)列表
$#: 參數(shù)個數(shù)
$$: 腳本運(yùn)行時的PID
$?: 腳本退出碼
$! 執(zhí)行上一個背景指令的PID(后臺運(yùn)行的最后一個進(jìn)程的進(jìn)程ID號)
$? 執(zhí)行上一個指令的返回值 (顯示最后命令的退出狀態(tài)。0表示沒有錯誤,其他任何值表明有錯誤)
$- 顯示shell使用的當(dāng)前選項,與set命令功能相同
$@ 跟$*類似,但是可以當(dāng)作數(shù)組用

?@的區(qū)別

當(dāng)命令行為test.sh 1 2 3
"$*"表示"1 2 3"
"$@"表示"1" "2" "3"
二者沒有被引號括起來時是一樣的都為"1 2 3",只有當(dāng)被引號括起來后才表現(xiàn)出差異

# 數(shù)組 animals
$ animals=("a dog" "a cat" "a fish")

# ${animals[*]} 和 ${animals[@]}的行為是一致
$ for i in ${animals[*]}; do echo $i; done
$ for i in ${animals[@]}; do echo $i; done
#輸出如下
a
dog
a
cat
a
fish

# 被用引號引起來的區(qū)別
$ for i in "${animals[*]}"; do echo $i; done
a dog a cat a fish

$ for i in "${animals[@]}"; do echo $i; done
a dog
a cat
a fish

$()等同于:``(反引號):運(yùn)行一段命令

$(()) 進(jìn)行數(shù)字運(yùn)算 
a=3;b=2;c=5
echo $((a+b*c))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容