Bash: 디렉토리 이름이 xargs에서 작동하지 않습니다.

Bash: 디렉토리 이름이 xargs에서 작동하지 않습니다.

다음 명령:

echo ./test/test2/test23 | xargs -I "{}" echo `dirname "{}"`  

출력: .(예상과 다름)

다음 명령:

echo ./test/test2/test23 | xargs -I "{}" echo `dirname ./test/test2/test23` 

출력: ( ./test/test2예상대로)

다음 명령:

echo ./test/test2/test23 | xargs -I "{}" echo `echo "{}"`  

출력: ( ./test/test2/test23예상대로)

첫 번째 명령의 출력이 없는 이유는 무엇입니까 ./test/test2?

답변1

예기치 않은 출력이 발생하는 이유는 dirname "{}"하위 쉘 대체(출력은 .)가 먼저 수행되어 명령이 유효해지기 때문 입니다 echo "./test/test2/test23" | xargs -I "{}" echo .. xargs' 에 지정된 태그가 일치하지 않으므로 아무것도 {}대체되지 않고 echo .예상대로 실행되며 출력은 입니다 ..

관련 정보