[ 轉]Shell中參數($0,$1,$#,$NF,$@等)的含義


Shell中參數($0,$1,$#,$NF,$@等)的含義        

  • 發布時間: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 $* 傳遞給腳本或函數的所有參數。 aliyunzixun@xxx.com 傳遞給腳本或函數的所有參數。與$*的區別在於加上”“后,前者是將所有參數合成一個,后者不變 $? 上個命令的退出狀態,或函數的返回值。 $$ 當前Shell進程ID。對於 Shell 腳本,就是這些腳本所在的進程ID。

    #!/bin/bash  function bfunc()  {  echo "$1"  }  function afunc()  {  echo "/$0 = ${0}"  echo "/$1 = ${1}"  echo "/$# = ${#}"  echo "/$* = ${*}"  echo "/  aliyunzixun@xxx.com = ${@}"  echo "/$$ = ${$}"  echo "/"/  aliyunzixun@xxx.com/" = $(bfunc "${@}")"  echo "/"/$*/" = $(bfunc "${*}")"  }  afunc "a" "b" "c" "d" 

    上述代碼的執行結果是:

    $0 = ./test.sh  $1 = a  $# = 4  $* = a b c d  aliyunzixun@xxx.com = a b c d  $$ = 44076  "  aliyunzixun@xxx.com" = a  "$*" = a b c d 

    可以清晰地看到aliyunzixun@xxx.com 和$* 的區別了吧.

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM