感嘆符付きの文字列のエコー

感嘆符付きの文字列のエコー

bashに入力した内容と「echo」について得た内容は次のとおりです。

$ echo '!$'   
!$  
$ echo "!$"  
echo "'!$'"  
'!$'

「echo」が2番目の入力をどのように処理するかを知りたいです。 「echo」は、最初に入力した文字列(必要に応じていくつかの拡張)を印刷してから、いくつかの文字列(実行可能な場合)を実行するようです。

構成できますが理解できない、より興味深い例は次のとおりです。

$ echo '!$'  
!$  
$ echo "!echo "!$""  
echo "echo '!$' "'!$'""  
echo '!$' !$

ベストアンサー1

コマンドから:

echo "!$"

!$bash以前からに拡張されましたecho二重引用符の中!、有効な場合は、バックスラッシュエスケープを使用しない限り、記録拡張を実行します\bash拡張が完了し、echoここでは何も実行されず、結果の内容のみが印刷されます。

!$前のコマンドの最後のパラメータである文字列を参照してください'!$'

2番目の例では:

$ echo '!$'
!$
$ echo "!echo "!$""
echo "echo '!$' "'!$'""
echo '!$' !$

Commandecho "echo '!$' "'!$'""に渡されたパラメータはecho3つの部分に分けられます。

  • まず:"echo '!$' "、文字列に展開されますecho '!$'
  • 2番目:'!$'、文字列に拡張されました!$
  • 3番目:""、空の文字列に展開されます。

おすすめ記事