root@home:~$ ls
root@home:~$ echo abc > z1
root@home:~$ echo xyz > z2
root@home:~$ ls
z1 z2
root@home:~$ ls | xargs -I{} cat {}
abc
xyz
root@home:~$ echo z1 z2 | xargs -I{} cat {}
cat: 'z1 z2': No such file or directory
root@home:~$ echo "z1 z2" | xargs -I{} cat {}
cat: 'z1 z2': No such file or directory
为什么 xargs
不适合 echo
但与 ls
?
答案1
echo "z1 z2"
生成单行字符串:
z1 z2
ls
生产两条生产线:
z1
z2
您可以使用 复制其行为echo -e
,它将打印\n
为换行符:
$ echo -e "z1\nz2" | xargs -I{} cat {}
abc
xyz