次のコマンド:
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 .
期待どおりに実行され、出力はです.
。