test.sh
COMMAND1="Build `date`"
COMMAND2="echo $PATH"
echo "Command1 is: $COMMAND1"
echo "Command2 is: $COMMAND2"
output
Command1 is: Build Wed Dec 26 21:09:43 UTC 2018
Command2 is: echo /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
В приведенном выше сценарии оболочки, как я могу эхо без оценки выраженийто есть я хочу Command1 is: Build `date`
Я понимаю, что могу экранировать символы `
и $
, но в моем приложении они исходят из вышестоящего сервиса и передаются в качестве аргумента сценарию оболочки.Даже вышестоящий сервис не может их избежать, потому что позже в скрипте мне действительно нужно выполнить эти команды.
Идеальным способом было бы указать echo только развернуть переменную $COMMAND1
, но ничего внутри нее не оценивать.Или используйте sed
, чтобы избежать всех вхождений `
и $
, но я не смог достичь ни одного.