Comment attribuer une heredoc valeur à une variable en Bash?

J'ai cette multi-ligne de chaîne (guillemets compris):

abc'asdf"
$(dont-execute-this)
foo"bar"''

Comment aurais-je l'attribuer à une variable à l'aide d'un heredoc en Bash?

J'ai besoin de conserver les retours à la ligne.

Je ne veux pas échapper les caractères dans la chaîne, ce serait ennuyeux...

  • J'ai juste essayé une heredoc cession avec une seule cité 'EOF', avec échappé retours à la ligne (avec ` in the content: if the second line has cd commande, j'obtiens en retour: ".sh: ligne X: cd: command not found"; mais si je double-quote "EOF"; puis des variables bash ${A} ne pas être préservé comme des chaînes de caractères (ils se élargie); mais ensuite, des sauts de lignes sont préservées et, je n'ai pas de problème d'exécution d'une commande avec cd en deuxième ligne (et à la fois des "expressions du FOLKLORE" et "expressions du FOLKLORE" semblent bien jouer aussi avec eval, pour l'exécution d'un ensemble de commandes stockées dans une variable de type string). Cheers!
  • ... et pour ajouter à mon commentaire précédent: bash commentaires "#" en double-qouted "EOF" variable, si elle est appelée par eval $VAR, seront la cause de tout le reste du script à être commentée, comme ici, $VAR sera considéré comme une seule ligne; pour être en mesure d'utiliser bash # commentaires multilignes script, double-quote également variable dans le eval call: eval "$VAR"`.
  • J'ai eu des problèmes avec eval ith cette méthode, mais qui n'a pas suivi vers le bas comme elle faisait partie d'un paquet qui evals certaines variables définies dans le fichier config. Message d'erreur était: /usr/lib/network/network: eval: line 153: syntax error: unexpected end of file. J'ai tout juste de passer à une autre solution.
InformationsquelleAutor Neil | 2009-07-22