сценарий Bash: вычесть префикс из последовательности

Потому что echo объединяет все аргументы для печати их, а ваш сценарий ограничен первым аргументом . Вы должны использовать в своем скрипте «$ @» , а не $ 1 .

Давайте посмотрим на аргументы, которые вы предоставляете для своих тестов:

  • ./ test "AB"
    • один аргумент, трехсимвольная строка A пробел B
  • ./test "" AB "" "
    • два аргумента
      • первый, пустая строка соединенные с A
      • второй, B конкатенируется с пустой строкой
  • ./ test "" "AB" "" "
    • одним аргументом, пустой строкой конкатенируется с A пробелом B конкатенирован с пустой строкой
  • ./ test "" "" AB "" ""
    • два аргумента
      • первый, пустая строка соединены с пустой строкой соединены с A
      • секунда, B конкатенирована с пустой строкой конкатенирована с пустой строкой

Примечание: вы увидите разные результаты от echo , если вы использовали более одного пробела в своих аргументах. Это потому, что echo объединяет свои аргументы в один пробел:

$ echo "A   B"
A   B
$ echo ""A   B""
A B
$ echo """A   B"""
A   B
$ echo """"A   B""""
A B
-1
01.09.2018, 04:16
1 ответ

Кажется, вы оставили на один $слишком много. Замените $wholeна :

.
final=${whole#$prefix};
3
28.01.2020, 05:07

Теги

Похожие вопросы