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 '!$' "'!$'""
に渡されたパラメータはecho
3つの部分に分けられます。
- まず:
"echo '!$' "
、文字列に展開されますecho '!$'
。 - 2番目:
'!$'
、文字列に拡張されました!$
。 - 3番目:
""
、空の文字列に展開されます。