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 .期待どおりに実行され、出力はです.

関連情報