Я хочу выполнить команду echo перед ее выполнением. Эта команда заменяет строку 'PROJECT_NAME' 'Hello world' в файле file.yaml.Как выполнить команду echo перед ее выполнением
PROJECT_NAME="Hello world"
CMD="replace.py 'PROJECT_NAME' '${PROJECT_NAME}' file.yaml"
echo "${CMD}"
${CMD}
Каков правильный способ процитировать эту строку, чтобы команда выполнялась, и эхо отображает команду?
Обратите внимание, что значение переменной $ {PROJECT_NAME} содержит пробелы, а replace.py занимает ровно 3 аргумента.
Я попытался убежать от всех котировок (\ ') и знаков доллара (\ $). Я попытался заменить одиночные кавычки (') на двойные кавычки (").
С некоторыми цитатами он будет рассматривать каждое слово в« Hello world »как отдельный аргумент arg, так что replace.py захлопнет« мир », не будучи имя файла, которое он ожидает.
Я прочитал http://mywiki.wooledge.org/BashFAQ/050, но все еще не могу понять. Я предпочитаю не дублировать команду или использовать set -x (потому что он печатает набор + x при использовании этого, чтобы отключить его).
Похоже, вы говорите ther e нет простого способа (кроме set -x), чтобы избежать команды, которая не загромождает и будет очевидна для большинства читателей. В этом случае я бы пошел с set -x. Благодарю. – dougkramer