İstediğin şeyin bu olduğuna inanıyorum. Tüm argümanları tek bir dizgeye yerleştirir, boşluklarla ayırarak, hepsine tek tırnak işareti koyar:
str="'$*'"
$*$IFSvarsayılan olarak bir boşluk olan ilk karakterle ayrılan tüm komut dosyaları argümanlarını üretir .
Çift tırnaklı bir dizgede tek tırnaktan kaçmaya gerek yoktur.
Örnek
Yukarıdakileri bir komut dosyasına koyalım:
$ cat script.sh
#!/bin/sh
str="'$*'"
echo "$str"
Şimdi betiği örnek değişkenlerle çalıştırın:
$ sh script.sh one two three four 5
'one two three four 5'
Bu betik POSIX'dir. İşe yarayacak bashama gerektirmez bash.
Bir varyasyon: boşluklar yerine eğik çizgilerle birleştirme
Ayarlayarak boşluklardan başka bir karaktere geçebiliriz IFS:
$ cat script.sh
#!/bin/sh
old="$IFS"
IFS='/'
str="'$*'"
echo "$str"
IFS=$old
Örneğin:
$ sh script.sh one two three four
'one/two/three/four'