Saya percaya ini melakukan apa yang Anda inginkan. Ini akan menempatkan semua argumen dalam satu string, dipisahkan oleh spasi, dengan tanda kutip tunggal di semua:
str="'$*'"
$*
menghasilkan semua argumen skrip yang dipisahkan oleh karakter pertama $IFS
yang, secara default, adalah spasi.
Di dalam string yang dikutip ganda, tidak perlu keluar dari tanda kutip tunggal.
Contoh
Mari kita letakkan di atas dalam file skrip:
$ cat script.sh
#!/bin/sh
str="'$*'"
echo "$str"
Sekarang, jalankan skrip dengan argumen contoh:
$ sh script.sh one two three four 5
'one two three four 5'
Script ini POSIX. Ini akan bekerja dengan bash
tetapi tidak perlu bash
.
Variasi: disatukan dengan garis miring bukan spasi
Kami dapat mengubah dari spasi ke karakter lain dengan menyesuaikan IFS
:
$ cat script.sh
#!/bin/sh
old="$IFS"
IFS='/'
str="'$*'"
echo "$str"
IFS=$old
Sebagai contoh:
$ sh script.sh one two three four
'one/two/three/four'