मेरी 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]
या $*
) के बजाय "a" "b c" "d"
बन जाता है।
@mat क्यों गूगल अन्य सभी डुप्लिकेट नहीं मिला:
इसके अलावा, मैं विषय पर इस खूबसूरत पढ़ने की सिफारिश करेंगे? – 0x90
@ 0x90: Google "विराम चिह्न" को सूचीबद्ध नहीं करता है, केवल शब्दों; इस तरह की चीजों के लिए [symbolhound] (http://symbolhound.com/?q=%24%40+%24%2A) आज़माएं। –