以下命令:
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 .
按预期运行,输出为.
。