Linux--Shell中變量 $# $0 $1 $2 $@ $* $$ $? 的含義

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
相關文章
相關標籤/搜索