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