bash에 입력한 내용과 "echo"에 대해 얻은 내용은 다음과 같습니다.
$ echo '!$'
!$
$ echo "!$"
echo "'!$'"
'!$'
"echo"가 두 번째 입력을 어떻게 처리하는지 알고 싶습니다. "echo"는 먼저 입력한 문자열(필요한 경우 일부 확장)을 인쇄한 다음 일부 문자열(실행 가능한 경우)을 실행하는 것 같습니다.
구성할 수는 있지만 이해할 수 없는 더욱 흥미로운 예는 다음과 같습니다.
$ echo '!$'
!$
$ echo "!echo "!$""
echo "echo '!$' "'!$'""
echo '!$' !$
답변1
명령에서:
echo "!$"
!$
bash
이전에서 으로 확장되었습니다 echo
.큰따옴표 안에!
, 활성화된 경우 백슬래시 이스케이프를 사용 하지 않는 한 기록 확장을 수행합니다 \
. bash
확장이 완료되었으며 echo
여기서는 아무 작업도 수행되지 않고 결과 내용만 인쇄됩니다.
!$이전 명령의 마지막 매개변수인 string 을 참조합니다 '!$'
.
두 번째 예에서는:
$ echo '!$'
!$
$ echo "!echo "!$""
echo "echo '!$' "'!$'""
echo '!$' !$
Command echo "echo '!$' "'!$'""
에 전달된 매개변수는 echo
세 부분으로 나뉩니다.
- 첫째:
"echo '!$' "
, string 으로 확장됩니다echo '!$'
. - 두 번째:
'!$'
, string 으로 확장되었습니다!$
. - 세 번째:
""
, 빈 문자열로 확장됩니다.
답변2
echo
인수를 반복하여 표준 출력으로 보내면 됩니다.
모든 마법은 쉘에 의해 수행됩니다. 쉘은 일부 패턴을 다른 패턴으로 대체합니다. 예를 들어 변수( 로 시작 $
), 기록 레코드( 로 시작 !
) 등이 있습니다.
bash
자세한 내용은 설명서를 참조하세요 .