2017-01-09 1 views
0

einfachEcho [alt Ursachen gefunden Ereignis nicht

laufen
echo "This is a **test** see ![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)" 

Sie erhalten:

bash: ![alt: event not found 

Warum? Es wird erwartet, This is a **test** see ![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)

+0

Sie können die beibehalten doppelte Anführungszeichen wie in Ihrem Beispiel, verhindern jedoch die Erweiterung des Verlaufs, indem Sie die spezielle Behandlung der Variablen '!' entfernen. Fügen Sie ein '' '' '' vorher '' ' – Inian

Antwort

2

Verwendung Apostrophe

echo 'This is a **test** see ![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)' 

Apostrophe nehmen Sie den Test, den Sie als wörtlich übergeben. Während doppelt zitierte Strings von bash interpretiert werden, zum Beispiel würde $VAR eine Variable anzeigen, $(..) würde einen Befehl ausführen und das stdout einfügen, und [...] werden als boolesche Evaluator behandelt und ! als nicht, und so weiter. Von dem bash Handbuch:

Enclosing Zeichen in doppelten Anführungszeichen bewahrt den wörtlichen Wert aller Zeichen innerhalb der Anführungszeichen, mit Ausnahme von $, , \, and, when history expansion is enabled, !. The characters $ and ihre besondere Bedeutung withindouble Zitate behalten. Der umgekehrte Schrägstrich behält seine besondere Bedeutung nur, wenn eines der folgenden Zeichen folgt: $, `,", \, oder. Ein doppeltes Anführungszeichen kann in Anführungszeichen gesetzt werden, indem ein umgekehrter Schrägstrich vorangestellt wird. Wenn aktiviert, wird die Verlaufserweiterung ausgeführt es sei denn, ein! in doppelte Anführungszeichen erscheinen entkam ein Backslash. der Backslash die! vorhergehenden wird nicht entfernt.

+0

Was ist der Unterschied zwischen einfachen und doppelten Anführungszeichen in echo? – somenxavier

+0

Ich erweiterte die Antwort, um Ihre Frage zu beantworten – Teudimundo

0

die ! als NOT (logische NOT) Operator interpretiert wird und somit [alt als Befehl behandelt Die Verwendung von einfachen Anführungszeichen ist wahrscheinlich die beste Option hier:

echo 'This is a **test** see ![alt text](https://github.com/adam-p/markdown-here/raw/master/src/common/images/icon48.png)'