5
在我script.sh
:
[email protected]
bb=$*
echo $aa
echo $bb
運行它時:
source script.sh a b c d e f g
我得到:
a b c d e f g
a b c d e f g
是什麼[email protected]
和$*
之間的區別?
在我script.sh
:
[email protected]
bb=$*
echo $aa
echo $bb
運行它時:
source script.sh a b c d e f g
我得到:
a b c d e f g
a b c d e f g
是什麼[email protected]
和$*
之間的區別?
$*
和[email protected]
之間沒有區別,但是"[email protected]"
和"$*"
之間存在差異。
$ cat 1.sh
mkdir "$*"
$ cat 2.sh
mkdir "[email protected]"
$ sh 1.sh a "b c" d
$ ls -l
total 12
-rw-r--r-- 1 igor igor 11 mar 24 10:20 1.sh
-rw-r--r-- 1 igor igor 11 mar 24 10:20 2.sh
drwxr-xr-x 2 igor igor 4096 mar 24 10:21 a b c d
我們給了三個參數的腳本(a
,b c
和d
),但在「$ *」他們都被合併爲一個參數a b c d
。
$ sh 2.sh a "b c" d
$ ls -l
total 24
-rw-r--r-- 1 igor igor 11 mar 24 10:20 1.sh
-rw-r--r-- 1 igor igor 11 mar 24 10:20 2.sh
drwxr-xr-x 2 igor igor 4096 mar 24 10:21 a
drwxr-xr-x 2 igor igor 4096 mar 24 10:21 a b c d
drwxr-xr-x 2 igor igor 4096 mar 24 10:21 b c
drwxr-xr-x 2 igor igor 4096 mar 24 10:21 d
您可以在這裏看到,這"$*"
意味着總有一個單獨的參數,並"[email protected]"
包含許多參數,如腳本了。 「$ @」是一個特殊的標記,意思是「用引號包裹每個單獨的參數」。因此a "b c" d
變成(或者說停留)"a" "b c" "d"
而不是"a b c d"
("$*"
)或"a" "b" "c" "d"
([email protected]
或$*
)。
另外,我建議的主題是這個美麗閱讀:
@mat爲什麼谷歌沒有找到所有其他的重複? – 0x90 2013-03-24 09:38:40
@ 0x90:Google不索引「標點符號」,只是單詞;嘗試[symbolhound](http://symbolhound.com/?q=%24%40+%24%2A)這樣的事情。 – 2013-03-24 12:27:29