我正在尝试编写简短的脚本以及以下命令:
echo "aaa111 bbb111" | xargs -I {} echo {} | sed 's/111/222/g'
返回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
,但是它也不起作用。还是不明白,为什么。
似乎您所需要的只是一个简单的循环:
for file in *coff*; do
ln -s "${file}" "${file/coff-/}"
done
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句