Обратный sla sh (\) не должен выводиться с помощью команды echo - PullRequest
1 голос
/ 27 мая 2020

У меня есть файл параметров (param.env) со следующим содержимым.

MY_PARAM=com:27}WMV\)pviZN

также файл bash, в котором я извлекаю значение MY_PARAM и записываю его в случайный файл.

#!/bin/bash


value=$(grep "^MY_PARAM=" param.env | cut -d '=' -f2-)

value1=$(cat param.env | grep "^MY_PARAM" | sed 's/=/ /' | awk '{print $2}')
echo $value

echo $value1

printf '%s\n' "$value"

Вывод:

com:27}WMV\)pviZN
com:27}WMV\)pviZN
com:27}WMV\)pviZN

Однако я ожидаю, что \ будет экранирован и не должен быть частью вывода. Мне также не разрешено редактировать param.env.

Ожидаемый результат:

com:27}WMV)pviZN

1 Ответ

2 голосов
/ 27 мая 2020

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

$ (. param.env; echo "$MY_PARAM")
com:27}WMV)pviZN

Я поместил команды в подоболочку, чтобы они не t загрязняют окружающую среду.

...