जवाबों:
आपको सभी तर्कों को रीसेट करना होगा। उदाहरण के लिए $3
:
$ set -- "${@:1:2}" "new" "${@:4}"
मूल रूप से आप अपने वर्तमान मूल्यों के लिए सभी तर्क निर्धारित करते हैं, केवल उस एक को छोड़कर जिसे आप बदलना चाहते हैं। POSIX 7 द्वारा भी निर्दिष्ट है ।set --
"${@:1:2}"
अंकन दो के लिए विस्तार किया गया है (इसलिए 2
अंकन में) ऑफसेट स्थितीय से शुरू तर्क 1
(यानी $1
)। यह "$1" "$2"
इस मामले के लिए एक आशुलिपि है , लेकिन जब आप प्रतिस्थापित करना चाहते हैं तो यह बहुत अधिक उपयोगी है "${17}"
।
उपयुक्तता और स्थिरता के लिए ऑप्टिमाइज़ करना, आप असाइन करना $1
और $2
अधिक सार्थक चर (मुझे नहीं पता, input_filename = $1
और output_filename = $2
या कुछ) से बेहतर हो सकते हैं और फिर उन चर में से एक को ओवरराइट कर सकते हैं ( input_filename = 'chintz'
), इनपुट को स्क्रिप्ट में अपरिवर्तित छोड़कर कहीं और चाहिए।