2017-01-09 5 views
0

は単にエコーは、[altが、イベントが見つからない

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

を実行する原因となるあなたが得る:

bash: ![alt: event not found 

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

+0

あなたの例のように二重引用符で囲みますが、 '!'変数の特別な扱いを削除することで履歴の拡張を防ぎます。 '!'の前に '' \ ''を追加してください – Inian

答えて

2

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

単一引用符は、あなたにそのまま渡すテストを取る単一引用符を使用して期待されます。二重引用符で囲まれた文字列はbashによって解釈されますが、たとえば$VARは変数を示し、$(..)はコマンドを実行してstdoutを挿入し、[...]はブール評価子として扱われ、!はNOTとして処理されます。 bashのマニュアルから:

二重引用符で文字を囲む$、, \, and, when history expansion is enabled, !. The characters $ andはその特別な意味withindouble引用符を保持を除いて、全ての文字のリテラル値を保持します。 $、 `、"、\、または二重引用符は、二重引用符の前にバックスラッシュを付けて引用することができます。有効にすると履歴拡張が実行されますない限り!二重引用符で出現する。!の前にバックスラッシュが除去されない。バックスラッシュを使用して

+0

エコーの一重引用符と二重引用符の違いは何ですか? – somenxavier

+0

あなたの質問に答えて答えを広げました – Teudimundo

0

!は、NOT(論理NOT)演算子と解釈されるエスケープされ、従って、[altコマンドとして扱われますおそらく一重引用符を使用することが最適なオプションです:

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