Linux中變量 $# $0 $1 $2 $@ $* $$ $? 的含義.shell
$# 是傳給腳本的參數個數bash
$0 是腳本自己的名字ide
$1 是傳遞給該shell腳本的第一個參數spa
$2 是傳遞給該shell腳本的第二個參數進程
$@ 是傳給腳本的全部參數的列表字符串
$* 是以一個單字符串顯示全部向腳本傳遞的參數,與位置變量不一樣,參數可超過9個it
$$ 是腳本運行的當前進程ID號table
$? 是顯示最後命令的退出狀態,0表示沒有錯誤,其餘表示有錯誤class
@ 與 * 的區別:變量
相同點:都是引用全部參數
不一樣點:只有在雙引號中體現出來。假設在腳本運行時寫了三個參數(分別存儲在1 2 3)
"*" 等價於「1 2 3"(傳遞了一個參數);
「@" 等價於 "1""1""2" "$3"(傳遞了三個參數)。
例子一:
變量的簡單認識。
[root@localhost]# cat dels.sh #!/bin/bash ##dels.sh echo "number:$#" echo "scname:$0" echo "first :$1" echo "second:$2" echo "argume:$@" echo "show parm list:$*" echo "show process id:$$" echo "show precomm stat: $?" |
[root@localhost]# bash dels.sh a b c number:3 scname:dels.sh first :a second:b argume:a b c show parm list:a b c show process id:19815 show precomm stat: 0 |
例子二:
@ 與 * 的區別
[root@localhost]# cat dels.sh #!/bin/bash echo "argume\$@:$@" echo"-----------------------------1" for key in $@ do echo "for_in-\$@:"$key done echo"-----------------------------2" for key in "$@" do echo 'for_in-"$@":'$key done echo"-----------------------------3" for key2 in $* do echo 'for_in-$*:'$key2 done echo"-----------------------------4" for key2 in "$*" do echo 'for_in-"$*":'$key2 done echo"-----------------------------5" |
[root@localhost]# bash dels.sh a b c argume$@:a b c -----------------------------1 for_in-$@:a for_in-$@:b for_in-$@:c -----------------------------2 for_in-"$@":a for_in-"$@":b for_in-"$@":c -----------------------------3 for_in-$*:a for_in-$*:b for_in-$*:c -----------------------------4 for_in-"$*":a b c -----------------------------5 |