मेरा मानना है कि यह वही करता है जो आप चाहते हैं। यह सभी तर्कों को एक स्ट्रिंग में रखेगा, रिक्त स्थान द्वारा अलग किया जाएगा, चारों ओर एकल उद्धरण के साथ:
str="'$*'"
$*$IFSडिफ़ॉल्ट रूप से, जिसके पहले चरित्र द्वारा अलग किए गए सभी स्क्रिप्ट तर्क उत्पन्न करते हैं , एक स्थान है।
एक दोहरे उद्धरण स्ट्रिंग के अंदर, एकल-उद्धरण से बचने की कोई आवश्यकता नहीं है।
उदाहरण
हमें एक स्क्रिप्ट फ़ाइल में ऊपर डालते हैं:
$ cat script.sh
#!/bin/sh
str="'$*'"
echo "$str"
अब, नमूना तर्क के साथ स्क्रिप्ट चलाएँ:
$ sh script.sh one two three four 5
'one two three four 5'
यह स्क्रिप्ट POSIX है। यह साथ काम करेगा bashलेकिन इसकी आवश्यकता नहीं है bash।
एक भिन्नता: रिक्त स्थान के बजाय स्लैश के साथ समवर्ती
हम एक स्थान से दूसरे वर्ण में समायोजन करके बदल सकते हैं IFS:
$ cat script.sh
#!/bin/sh
old="$IFS"
IFS='/'
str="'$*'"
echo "$str"
IFS=$old
उदाहरण के लिए:
$ sh script.sh one two three four
'one/two/three/four'