我正在尝试编写简短的脚本和以下命令:
echo "aaa111 bbb111" | xargs -I {} echo {} | sed 's/111/222/g'
Returns aaa222 bbb222
,这是我所期望的。
我期待下一个命令:
echo "aaa111 bbb111" | xargs -I {} echo $(echo {} | sed 's/111/222/g')
返回相同,但它返回aaa111 bbb111
!这是为什么?
UPD:我想要实现的目标:
我有很多文件,如pic30-coff-gcc
,pic30-coff-ag
等,我需要为每个文件创建一个符号链接,如pic30-gcc
->pic30-coff-gcc
等。
所以我写了这个:
ls|grep 'coff-'|xargs -I {} ln -s {} $(echo {} | sed 's/coff-//g')
它不起作用:对于每个文件,它报告该文件存在。我检查了这样的命令:
ls|grep 'coff-'|xargs -I {} echo "ln -s {} $(echo {} | sed 's/coff-//g')"
是的,这sed
部分不起作用:
ln -s pic30-coff-gcc pic30-coff-gcc
ln -s pic30-coff-gcc-4.0.3 pic30-coff-gcc-4.0.3
...
但如果我只是输入
echo "ln -s pic30-coff-gcc $(echo pic30-coff-gcc | sed 's/coff-//g')"
有用:
ln -s pic30-coff-gcc pic30-gcc
然后我用 编写了测试命令aaa111
,它也不起作用。还是不明白,为什么。