$@अलग-अलग शब्दों में $*विस्तार होता है (जबकि एक शब्द में विस्तार होता है), जैसा कि bashमैनुअल में बताया गया है । इस प्रकार, जब आप लिखते हैं
zenity --text="$@"
इसका विस्तार होता है
zenity --text="$1" "$2" "$3"
हालाँकि, शेल वैरिएबल असाइनमेंट शब्द विभाजन से नहीं गुजरते हैं। ध्यान दें कि फ़ील्ड / शब्द विभाजन bashमैनुअल में चर असाइनमेंट के लिए विस्तार की सूची में छोड़ा गया है । यह व्यवहार POSIX युक्ति के अनुरूप है । इसलिए, जब आप लिखते हैं
text="$@"
textयदि आपने लिखा था तो चर एक शब्द के रूप में सभी स्थितीय मापदंडों को प्राप्त करता है text="$*"। दरअसल, यही कारण है कि दोहरे असाइनमेंट अक्सर चर असाइनमेंट में अनावश्यक होते हैं। दोनों
text=$@
तथा
text=$*
पूरी तरह से सुरक्षित हैं।
इसलिए,
text=$@
zenity --option="$text"
"$text"एक शब्द का विस्तार करता है, यही कारण है कि यह काम करता है। ध्यान दें कि --option="$@"कमांड के लिए सिर्फ एक सामान्य तर्क है zenity, और शेल चर असाइनमेंट नहीं है, यही कारण है कि शब्द विभाजन यहां नहीं बल्कि अंदर होता है text=$@।
zenity --text="$*"-"$*"एक शब्द के लिए फैलता है।