Eu acredito que isso faz o que você quer. Ele colocará todos os argumentos em uma string, separados por espaços, com aspas simples ao redor de todos:
str="'$*'"
$* produz todos os argumentos de scripts separados pelo primeiro caractere de $IFS , que, por padrão, é um espaço.
Dentro de uma string com aspas duplas, não há necessidade de escapar de aspas simples.
Exemplo
Vamos colocar o acima em um arquivo de script:
$ cat script.sh
#!/bin/sh
str="'$*'"
echo "$str"
Agora, execute o script com argumentos de amostra:
$ sh script.sh one two three four 5
'one two three four 5'
Este script é POSIX. Ele funcionará com bash , mas não exige bash .
Uma variação: concatenando com barras em vez de espaços
Podemos mudar de espaços para outro caractere ajustando IFS :
$ cat script.sh
#!/bin/sh
old="$IFS"
IFS='/'
str="'$*'"
echo "$str"
IFS=$old
Por exemplo:
$ sh script.sh one two three four
'one/two/three/four'