1. 程式人生 > >[ 轉]Shell中引數($0,$1,$#,$NF,[email protected]等)的含義

[ 轉]Shell中引數($0,$1,$#,$NF,[email protected]等)的含義

Shell中引數($0,$1,$#,$NF,[email protected]等)的含義        

  • 釋出時間:2018-01-19 來源:網路 上傳者:使用者

        
  • 摘要:此處僅僅從來記錄平時常用的命令的引數。以免下次忘記時及時找到。也方便更多的人。awk$0表示所有$1表示第一個$NF表示最後一個$(NF-1)表示倒數第二個比如:echo'abcd'|awk'{print$0}'的結果是'abcd'echo'abcd'|awk'{print$1}'的結果是'a'echo'abcd'|awk'{print$NF}'的結果是'd'echo'abcd'|awk'{print$(NF-1)}'的結果是'c'function$0當前指令碼的檔名或者函式       

        

  • 此處僅僅從來記錄平時常用的命令的引數。以免下次忘記時及時找到。也方便更多的人。

    awk 

    $0表示所有 $1表示第一個 $NF表示最後一個 $(NF-1)表示倒數第二個

    比如:

    echo 'a b c d' | awk '{print $0}' 的結果是'a b c d'  echo 'a b c d' | awk '{print $1}' 的結果是'a'  echo 'a b c d' | awk '{print $NF}' 的結果是'd'  echo 'a b c d' | awk '{print $(NF-1)}' 的結果是'c'  function 

    $0 當前指令碼的檔名或者函式名 $n 傳遞給指令碼或函式的引數。n 表示position。例如,第一個引數是$1,第二個引數是$2。 $# 傳遞給指令碼或函式的引數個數。比如fuc a b c d, 共4個引數返回的值是就是4 $* 傳遞給指令碼或函式的所有引數。 [email protected]

    傳遞給指令碼或函式的所有引數。與$*的區別在於加上”“後,前者是將所有引數合成一個,後者不變 $? 上個命令的退出狀態,或函式的返回值。 $$ 當前Shell程序ID。對於 Shell 指令碼,就是這些指令碼所在的程序ID。

    #!/bin/bash  function bfunc()  {  echo "$1"  }  function afunc()  {  echo "/$0 = ${0}"  echo "/$1 = ${1}"  echo "/$# = ${#}"  echo "/$* = ${*}"  echo "/  [email protected]
    = ${@}"  echo "/$$ = ${$}"  echo "/"/  [email protected]/" = $(bfunc "${@}")"  echo "/"/$*/" = $(bfunc "${*}")"  }  afunc "a" "b" "c" "d" 

    上述程式碼的執行結果是:

    $0 = ./test.sh  $1 = a  $# = 4  $* = a b c d  [email protected] = a b c d  $$ = 44076  "  [email protected]" = a  "$*" = a b c d 

    可以清晰地看到[email protected] 和$* 的區別了吧.

    需要指出的是此處$0 的值是”./test.sh”為檔案的名稱。當我們把執行從./test.sh 改成source test.sh (或者直接執行afunc a b c d )的時候值就變成了”afunc”,也就是函式名了。