сумасшедшая проблема для отображения 2 переменных в эхо с bash / shell - PullRequest
0 голосов
/ 27 января 2019

У меня глупая проблема, полностью сводящая с ума сценарий shell / bash.У меня есть файл конфигурации с двумя определенными переменными ... Смотрите ниже мой файл с именем test.conf :

WEB_DIR="www"
TPL_DIR="tpl"

Теперь у меня есть сценарий оболочки / bash с именем test.sh с таким содержанием:

#!/bin/bash
source test.conf
echo $WEB_DIR
echo $TPL_DIR
echo -e "$WEB_DIR - $TPL_DIR"
exit 0

Как вы можете видеть, это очень просто, потому что этот вид сценария должен возвращать следующее:

www
tpl
www - tpl

Но я не знаюпочему, когда я запускаю этот скрипт, он возвращает следующее:

www
tpl
- tpl

Мы видим, что первая переменная $ WEB_DIR отсутствует, и я не знаю почему, потому что она определена.

У вас есть идея, почему?

Спасибо L.

1 Ответ

0 голосов
/ 27 января 2019

test.conf имеет окончания строки DOS, поэтому значение каждой переменной заканчивается переводом каретки.Сравните:

$ WEB_DIR=$'www\r'
$ TPL_DIR=$'tpl\r'
$ echo -e "$WEB_DIR - $TPL_DIR"
 - tpl

Возврат каретки в конце WEB_DIR "отображается" путем перемещения курсора в начало строки, так что - tpl перезаписывает www.

Удалите окончания строки DOS с помощью dos2unix или используйте текстовый редактор, чтобы сохранить файл с использованием конца строки Unix.

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