다음 명령:
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 .
예상대로 실행되며 출력은 입니다 .
.