Потому что echo
объединяет все аргументы для печати их, а ваш сценарий ограничен первым аргументом . Вы должны использовать в своем скрипте «$ @»
, а не $ 1
.
Давайте посмотрим на аргументы, которые вы предоставляете для своих тестов:
./ test "AB"
./test "" AB "" "
./ test "" "AB" "" "
./ test "" "" AB "" ""
Примечание: вы увидите разные результаты от echo
, если вы использовали более одного пробела в своих аргументах. Это потому, что echo объединяет свои аргументы в один пробел:
$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """"A B""""
A B
Кажется, вы оставили на один $
слишком много. Замените $whole
на :
final=${whole#$prefix};