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”,也就是函數名了。