为何:
find ../ -type f | xargs -Ifilename echo "$(basename filename)"和
find ../ -type f | xargs -Ifilename basename "$(echo filename)"给出不同的输出?这可以在任何目录上运行。
发布于 2022-08-28 17:29:41
运行set -x下的命令可以告诉您:
set -x
diff <(find ../ -type f | xargs -If1 echo "$(basename f1)") <(find ../ -type f | xargs -If2 basename "$(echo f2)")++ find ../ -type f
+ diff /dev/fd/63 /dev/fd/62
+++ basename f1
++ find ../ -type f
+++ echo f2
++ xargs -If2 basename f2
++ xargs -If1 echo f1你可以看到“回声f1”。因此,在xargs -If1 echo "$(basename f1)"中,$(...)在 xargs之前运行(因为命令替换在运行命令之前发生)。basename f1的结果是f1,它作为参数发送给xargs,因此它打印路径。
https://stackoverflow.com/questions/73520708
复制相似问题