【发布时间】:2022-01-25 23:59:28
【问题描述】:
当我对echo 使用带有子shell 的管道xargs 时,我明白了
user@DESKTOP-P560BV8:~/tmp/t$ echo ./foo/bar.jpg | xargs -I{} echo "$(basename {})"
./foo/bar.jpg
但是,这行得通
user@DESKTOP-P560BV8:~/tmp/t$ echo ./foo/bar.jpg | xargs -I{} basename {}
bar.jpg
如果我内联参数值
user@DESKTOP-P560BV8:~/tmp/t$ echo "$(basename ./foo/bar.jpg)"
bar.jpg
我不明白为什么会这样?我需要xargs在文本的每一行分别执行,所以-0参数不是一个选项
【问题讨论】:
-
命令替换在
xargs运行之前扩展。