Я считаю, что это делает то, что вы хотите. Все аргументы будут помещены в одну строку, разделенные пробелами, с одинарными кавычками:
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'