Creo que esto hace lo que quieres. Pondrá todos los argumentos en una cadena, separados por espacios, con comillas simples alrededor de todos:
str="'$*'"
$*
produce todos los argumentos de los scripts separados por el primer carácter de los $IFS
cuales, por defecto, es un espacio.
Dentro de una cadena con comillas dobles, no hay necesidad de escapar de comillas simples.
Ejemplo
Pongamos lo anterior en un archivo de script:
$ cat script.sh
#!/bin/sh
str="'$*'"
echo "$str"
Ahora, ejecute el script con ejemplos de argumentos:
$ sh script.sh one two three four 5
'one two three four 5'
Este script es POSIX. Funcionará con bash
pero no requiere bash
.
Una variación: concatenando con barras en lugar de espacios
Podemos cambiar de espacios a otro personaje ajustando IFS
:
$ cat script.sh
#!/bin/sh
old="$IFS"
IFS='/'
str="'$*'"
echo "$str"
IFS=$old
Por ejemplo:
$ sh script.sh one two three four
'one/two/three/four'