У мене є ця рядкова рядок (цитати включені):
abc'asdf"
$(dont-execute-this)
foo"bar"''
Як я можу призначити його змінної за допомогою heredoc в Bash?
Мені потрібно зберегти нові рядки.
Я не хочу уникати символів у рядку, це буде дратувати ...
"EOF"змінній, якщо буде викликано через eval $VAR, призведе до коментування всіх решти сценарію, оскільки тут $ VAR буде розглядатися як один рядок ; щоб мати можливість використовувати #коментарі bash у мультилінійному сценарії, подвійне цитування також змінне в eval call: eval "$ VAR" `.
evalцим методом, але я його не відслідковував, оскільки він був частиною якогось пакету, який містить evalдеякі змінні, визначені у його конфігураційному файлі. Повідомлення про помилку було: /usr/lib/network/network: eval: line 153: syntax error: unexpected end of file. Я просто перейшов на інше рішення.
'EOF', з уникнутими` in the content: if the second line hasрядковими розривами командою cd`, я повертаюся: " .sh: рядок X: cd: команда не знайдена "; але якщо я подвійно цитую"EOF"; тоді змінні bash${A}не зберігаються як рядки (вони розширюються); але потім, лінія-брейки будуть збережені - і я не маю проблеми запуску команди зcdу другому рядку ( і як «EOF» і «EOF» , здається, грають добре і зeval, для виконання набору команд , що зберігаються в струнна змінна ). Ура!