1. 程式人生 > >linux shell傳遞引數

linux shell傳遞引數

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