जवाबों:
$@
सभी मापदंडों को चर फैलता इस्तेमाल किया जब फ़ंक्शन कॉल, इसलिए
function foo()
{
echo "$@"
}
foo 1 2 3
प्रदर्शित करेगा 1 2 3
। यदि किसी फ़ंक्शन के अंदर उपयोग नहीं किया जाता है, तो यह स्क्रिप्ट को कॉल करते समय उपयोग किए जाने वाले सभी मापदंडों को निर्दिष्ट करता है। अधिक जानकारी के लिए bash मैनुअल पेज देखें ।
$ @ बाश में दो "स्थितीय पैरामीटर" अभ्यावेदन में से एक है, दूसरा $ * है।
दोनों, $ @ और $ * आंतरिक बैश चर हैं जो एक फ़ंक्शन या स्क्रिप्ट में पारित सभी मापदंडों का प्रतिनिधित्व करते हैं, एक महत्वपूर्ण अंतर के साथ , $ @ में प्रत्येक पैरामीटर एक अलग उद्धृत स्ट्रिंग के रूप में है, जबकि $ * में सभी पैरामीटर एक एकल स्ट्रिंग के रूप में हैं। यह अंतर निम्नलिखित कोड में दिखाया गया है:
foo() {
while [ "$1" != "" ]; do
echo $1
shift
done
}
dollar_at () {
foo "$@"
}
dollar_star () {
foo "$*"
}
echo "Using \$@"
dollar_at a b c
echo "Using \$*"
dollar_star a b c
आउटपुट:
Using $@
a
b
c
Using $*
a b c
ध्यान दें, जब $ * के साथ बुलाया जाता है, ठीक एक तर्क को foo () में पास किया जाता है, लेकिन $ @ के साथ तीन तर्क foo () में दिए जाते हैं।
अधिक जानकारी: http://tldp.org/LDP/abs/html/internalvariables.html#APPREF
$1
,$2
आदि के बावजूद$@
।