Как объединить строковые переменные в скрипте Bash - PullRequest
0 голосов
/ 28 июня 2018

Следующий скрипт выдает неожиданный вывод

#!/bin/bash
#
MY_DIRECTORY=.
OUTPUT_DIR="$MY_DIRECTORY""/build_test"
echo "MY_DIRECTORY is $MY_DIRECTORY"
echo "OUTPUT_DIR is $OUTPUT_DIR"

Я ожидаю следующего:

MY_DIRECTORY is .
OUTPUT_DIR is ./build_test

но на самом деле выдает:

MY_DIRECTORY is .
/build_testis .

Может кто-нибудь сказать мне, что я делаю не так? Примечание. Я использую GNU bash версии 4.4.12 (3) -релиз в командной оболочке Cygwin под Windows 10.

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Это проблема со смешанными окончаниями строк Unix и Windows. У вас есть возврат каретки в конце строки MY_DIRECTORY=. Возврат каретки вызывает перезапись части второй строки вывода. Я могу скопировать ваш вывод на мою установку Cygwin.

Если вы запустите скрипт через dos2unix, он будет работать как положено.

Чтобы предотвратить повторение подобных ситуаций, настройте текстовый редактор для сохранения файлов с использованием концов строк Unix.

0 голосов
/ 28 июня 2018

Сценарий в порядке. Я попытался запустить в моей системе, и дает ожидаемый результат. Я использую Bash версии 4.38.48 в Arch.

Если вы работаете в Windows, вы можете попробовать bash и в Windows, но я не думаю, что это должно повлиять на вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...