Я ожидаю
set -- "a b"
, чтобы установить $1 = "a" и $2 = "b", но вместо этого он устанавливает $1 = "a b" и $2 = "", что дает?
$1 = "a"
$2 = "b"
$1 = "a b"
$2 = ""
Двойные кавычки указывают, что "a b" следует рассматривать как один параметр. Используйте
"a b"
set -- a b
рассматривать их как два параметра.
Изменить в ответ на ваш комментарий : Понравилось?
$ a="a b" $ set -- $a $ echo $1 a $ echo $2 b
Строка в кавычках - это одно слово, поэтому вам просто нужно:
$ set -- "a" "b"