2013-03-24 5 views
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] और $* के बीच क्या अंतर है?

+0

@mat क्यों गूगल अन्य सभी डुप्लिकेट नहीं मिला:

इसके अलावा, मैं विषय पर इस खूबसूरत पढ़ने की सिफारिश करेंगे? – 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 

हम स्क्रिप्ट (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] या $*) के बजाय "a" "b c" "d" बन जाता है।

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

संबंधित मुद्दे