अंतिम स्थितिगत पैरामीटर सेट करने की कोशिश करते हुए /bin/dash
, मैंने कोशिश की है echo ${$#}
। हैरानी की बात यह है कि यह एक त्रुटि नहीं हुई, लेकिन पीआईडी में जो $$
चर सामग्री के समान है । प्रश्न, उस वाक्य रचना ने काम क्यों किया? वाक्यविन्यास नियम क्या है जो यहाँ लागू किया गया है?
मूल रूप से, मैंने जो किया है
$ set 1 2 3 4 5
$ echo ${$#}
13819
$ echo $$
13819
जाहिर है, %
ऐसे निर्माण में चरित्र को भी अनदेखा किया जाता है
$ echo ${$%}
13819
लेकिन *
और @
खराब प्रतिस्थापन त्रुटि में परिणाम:
$ echo ${$*}
sh: 10: Bad substitution
$ echo ${$@}
sh: 11: Bad substitution
#
और %
और क्या उन लोगों से व्यवहार का परिणाम है।
eval
, उदाहरण के लिए , उपयोग करें dash -c 'set 1 2 3 4 5; eval "echo \$$#"'
। स्रोत: उबंटू विकी
for i; do true; done
अंतिम वस्तु प्राप्त करना जानता था $i
) लेकिन कुछ अधिक ही सुंदर लग रही थी। eval
बेशक संभावित मुद्दे हो सकते हैं, किस हद तक सोचा जा सकता है - यह एक और विषय है। लेकिन हाँ, यह एक विकल्प है
${$*}
और${$@}
उत्पादन करने के लिए?