2

У меня головная боль, чтобы понять, почему мой сценарий не работает должным образом в Linux-подсистеме Linux.

Моя версия из магазина: Debian GNU/Linux 9.6 (stretch) (я тоже пробовал Ubuntu, с теми же результатами)

И моя версия bash: GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)

Это мой основной скрипт только для того, чтобы показать проблему:

PROJECT_ENV="development"
echo $PROJECT_ENV
compose_file="docker-compose.${PROJECT_ENV}.build.yml"
echo $compose_file

И это выводит:

.build.ymlpose.development

Как я понимаю, этот вывод не имеет никакого смысла для меня, я попытался переустановить Bash, но у меня все еще есть та же проблема.

1 ответ1

6

В конце содержимого переменной PROJECT_ENV символ возврата каретки. Вероятно, это связано с тем, что ваш скрипт использует окончания строк CR+LF (собственно в DOS/Windows) вместо единственного LF (Unix/Linux).

В Linux dos2unix - это правильный инструмент, чтобы это исправить.

Подробное объяснение заключается в следующем:

  1. Финальные отпечатки echo

    docker-compose.development
    
  2. CR заставляет терминал вернуться к началу строки.

  3. Последовательные символы перезаписывают предыдущий текст:

    .build.yml
    
  4. Следовательно, результат:

    .build.ymlpose.development
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .