drBatty писал(а): ↑06.11.2012 10:23
что непонятно? А если параметра у set нету, то параметры unset, и конструкция ${parametr:-word} возвращает word в соответствии
"Что это, Бэримор?"
Другими словами, это я должен спросить: что же вы умудрились не понять на этот раз? Может, снова спецификацию не написал? Или, может, вы разучились сравнивать картинки? Тогда у меня для вас плохие новости: это тяжелый случай.
Что же касается баша, то нет, правильно работает как раз dash.
Пустое (null, не unset!):
Код: Выделить всё
$ bash -c '( set -- ""; echo "A${*}R" )'
AR
значит, тк двоеточие _стоит_, должно быть заменено на word
Код: Выделить всё
$ bash -c '( set -- ""; echo "A${*:-w}R" )'
AR
но bash его не заменяет. А вот dash заменяет
Код: Выделить всё
$ dash -c '( set -- ""; echo "A${*:-w}R" )'
AwR
_Если_бы_ у меня двоеточие _не_ стояло, то bash бы работал правильно:
Код: Выделить всё
$ bash -c '( set -- ""; echo "A${*-w}R" )'
AR
$ dash -c '( set -- ""; echo "A${*-w}R" )'
AR
или, _если_бы_ я установил _два_ пустых парметра, то тоже все работало бы правильно:
Код: Выделить всё
$ bash -c '( set -- "" ""; echo "A${*:-w}R" )'
A R
$ dash -c '( set -- "" ""; echo "A${*:-w}R" )'
A R