linux shell傳遞引數
阿新 • • 發佈:2018-12-17
shell 傳遞引數 可以在執行shell指令碼時,向指令碼傳遞引數,指令碼獲取引數格式:$n. n代表數字,1為指令碼的第一個引數,2為執行指令碼的第二個引數,一次類推。 例:
#檔名test.sh
echo "shell 傳遞實參";
echo "執行檔名 $0";
echo "第一個引數 $1"
echo "第二個引數 $2";
執行指令碼
$ chmod +x test.sh #修改檔案為可執行檔案
$ ./test.sh 1 2
shell傳遞實參
執行檔名 ./test.sh
第一個引數1
第二個引數2
特殊符號處理引數
引數處理 | 說明 |
---|---|
$# | 傳遞到指令碼的個數 |
$* | 以一個單字串顯示所有向指令碼傳遞的引數 |
$$ | 指令碼執行的當前程序ID |
$! | 後臺執行的最後一個程序ID號 |
[email protected] | 與$#相似,使用時加雙引號,並在引號中返還每個引數 |
$- | 顯示Shell使用的當前選項,與set命令相同 |
$? | 顯示最後的命令退出狀態。0表示無錯誤。 |
例:
#test1.sh
echo "Shell 傳遞引數例項!"
echo "第一個引數: $1"
echo "引數的個數: $#"
echo "傳遞的引數作為一個字串顯示:$*"
執行指令碼,輸出結果
$ chmod +x test1.sh $ ./test.sh 1 2 Shell 傳遞引數例項 第一個引數: 1 引數個數: 2 傳遞的引數作為一個字串顯示; 1 2
@區別: 只有在雙引號中體現出來。假設在指令碼執行時寫了三個引數1 ,2 ,3. 則“*”等價於“1 2 3”(傳遞了一個引數),而“@”等價於“1” “2” “3”(傳遞了三個引數)。
例:
#test2.sh
echo "---$*----演示"
for i in "$*"; do
echo $i
done
echo "[email protected]演示"
for i in "[email protected]"; do
echo $i
done
執行結果:
$chmod +x test2.sh
$./test2.sh 1 2 3
---$*---演示
1 2 3
[email protected]演示
1
2
3