У меня есть скрипт установки среды, который я создаю в контейнере Docker. Он берет файл свойств, представляющий собой пары ключ = значение, а затем просматривает их и использует для создания среды. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пытаюсь сократить пользователя (значение, полученное из свойств), оно отображается как «user \ r», что вызывает ошибку на chown.
Это выполняется в среде докера, которую я подготовил - CentOS: 7 base. Идентификатор пользователя из файла свойств извлекается, создается как пользователь в контейнере и получает доступ к группе колес (usermod -aG wheel $ user), поэтому у них есть разрешения в контейнере.
Я могу убрать возврат каретки из этой конкретной переменной, но мне любопытно, как я мог избежать этой проблемы все вместе / как я вызвал ее, потому что у меня есть ощущение, что она может вызывать другие, в настоящее время невидимые проблемы.
#!/bin/bash
dirname=$(dirname $0)
input_properties="input-properties"
...
while read -r line; do declare -x "$line"; done <${dirname}/${input_properties}
...
$SUDO mkdir -p $log
...
$SUDO chown -R $app_user: $log
где $ app_user и $ log из файла входных свойств:
app_user=stackoverflow
log=/opt/program-root/logs
и ошибка
chown: invalid spec: 'stackoverflow\r:'