-exec eval을 사용하여 $0 [중복]을 찾으세요.

-exec eval을 사용하여 $0 [중복]을 찾으세요.

아래 명령어에서는 명령어 대신 $0찾은 파일을 평가하는 이유가 궁금합니다.findecho

$ find . -type f -perm -u=x -exec bash -c '
  /bin/echo $0 is the name of the file' {} \;

$0큰 따옴표, 등호를 사용하고 작은 따옴표를 사용하면 확장이 지연된다는 것을 알고 있지만 호출되는 명령(보통 ) 이기 때문에 -bash확장되지 않는 이유는 무엇입니까 ?/bin/echo$0

답변1

bash매뉴얼 페이지 에서 :

 -c    If the -c option is present, then commands are read from the first 
       non-option argument command_string.  If there are arguments after 
       the command_string,  they are assigned to the positional 
       parameters, starting with $0.

bash파일 이름은 중괄호를 사용하여 인수로 제공되므로 {}에 할당됩니다 $0. $0그런 다음 확장은 bash에 의해 수행됩니다.이전에전화해 보세요 /bin/echo.

관련 정보