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 "{}"首先执行 的子 shell 替换(输出为.),从而使该命令有效echo "./test/test2/test23" | xargs -I "{}" echo .。由于xargs' 的指定标记不匹配{},因此没有任何内容被替换,并且echo .按预期运行,输出为.

相关内容