2013-03-24 4 views
5

[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]$*の違いは何ですか?

+0

また、私がテーマにこの美しい読書を勧めますか? – 0x90

+1

@ 0x90:Googleは「句読点」のインデックスを作成しません。このようなことについて[symbolhound](http://symbolhound.com/?q=%24%40+%24%2A)を試してください。 –

答えて

8

$*[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 

我々は(ab cd)スクリプトに3つの引数を与えたが、「$の*」で、彼らはすべてを一つの引数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 

は、スクリプトが持っていたとして、"$*"は常に1つの引数を意味し、"[email protected]"は、できるだけ多くの引数が含まれていることを、ここで見ることができます。 "$ @"は "個々の引数を引用符で囲む"という特別なトークンです。したがって、"a b c d""$*")または"a" "b" "c" "d"[email protected]または$*)の代わりに、a "b c" d"a" "b c" "d"になります(またはむしろそのまま)。 Googleは他のすべての重複を見つけることができませんでしたなぜ@mat

http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST

関連する問題