У мене є ця рядкова рядок (цитати включені):
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
, для виконання набору команд , що зберігаються в струнна змінна ). Ура!