solution avec guillemets (en protégeant le caractère !) :
echo -e "#\!/bin/bash\necho 'Bonjour Monde'" > monScript
sans guillemets (en protégeant les caractères # ! ' "fin de ligne") :
echo -e \#\!/bin/bash\\necho \'Bonjour Monde\' > monScript
avec apostrophes (en protégeant les caractères ' "fin de ligne") :
echo -e '#!'/bin/bash\\necho \'Bonjour Monde\' > monScript
tu peux bien sur faire d'autres possibilités en mélangeant les techniques
man bash a écritDÉFINITIONS
Les définitions suivantes sont utilisées tout au long de ce document.
blanc
Une espace ou une tabulation.
mot
une séquence de caractères considérée comme une unité élémentaire par le shell. On parle également de token (jeton).
nom
un mot ne contenant que des caractères alphanumériques ou le soulignement (underscore), commençant par une lettre ou un soulignement. On s'y réfère également sous le terme identificateur.
méta-caractère
Un caractère qui, non protégé, sépare les mots. Un de ceux-ci :
| & ; ( ) < > espace tabulation
opérateur de contrôle
Un jeton ayant une fonction de contrôle. L'un des symboles suivants :
|| & && ; ;; ( ) | <retour-chariot>
man bash a écrit
PROTECTION
Les protections (quoting) permettent de forcer l'interpréteur à ignorer la signification spéciale de certains caractères ou mots. Les protections peuvent être utilisées pour empêcher le traitement des caractères spéciaux, éviter la reconnaissance des mots-réservés ou empêcher le développement des paramètres.
Tous les méta-caractères mentionnés dans le paragraphe DÉFINITIONS plus haut ont des significations spéciales pour le shell, et doivent être protégés pour garder leur propre valeur.
Lorsqu'on utilise l'expansion de l'historique des commandes (voir EXPANSION DE L'HISTORIQUE plus bas), le caractère de l'expansion de l'historique , généralement !, doit être mis entre apostrophes pour éviter l'expansion de l'historique. Il y a trois mécanismes de protection : le caractère d'échappement, les apostrophes (quote) et les guillemets (double-quote).
Un caractère barre oblique inverse (), quand il n'est pas protégé, représente le caractère d'échappement. Il préserve la valeur littérale du caractère qui le suit, à l'exception du <retour-chariot>. Si une séquence <retour-chariot> apparaît, et si la barre oblique inverse n'est pas protégée, l'ensemble <retour-chariot> est considéré comme une continuation de ligne (autrement dit, il est ignoré).
Encadrer des caractères entre des apostrophes simples préserve la valeur littérale de chacun des caractères. Une apostrophe ne peut pas être placée entre deux apostrophes, même si elle est précédée d'une barre oblique inverse.
Encadrer des caractères entre des guillemets préserve la valeur littérale de chacun des caractères sauf $, `, et \, et ! quand l'expansion de l'historique est activée. Les caractères $ et ` conservent leurs significations spéciales, même entre guillemets. La barre oblique inverse ne conserve sa signification que lorsqu'il est suivi par $, `, ", \, ou <fin-de-ligne>. Un guillemet peut être protégé entre deux guillemets, à condition de le faire précéder par une barre oblique inverse. Si elle est activée, l'expansion de l'historique sera effectuée à moins qu'un ! entre guillemets ne soit protégé par une barre oblique inverse. La barre oblique inverse précédant le ! n'est pas supprimée
Les caractères spéciaux * et @ ont des significations spéciales lorsqu'ils se trouvent entre guillemets (voir le paragraphe PARAMÈTRES ci-dessous).
Lire le manuel !!