我正试图编写一个简短的脚本,以下是命令:
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
!为什么会这样?
更新:我想实现什么:
我有很多像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
编写了测试命令,但它也无法正常工作。仍然不理解,为什么。
echo "aaa111 bbb111" | xargs -I @@ bash -c 'temp="@@"; echo ${temp//111/222}'
。 - akhan