日期:2014-05-16  浏览次数:20744 次

远程sed替换文本的问题
我写了一个脚本目的是通过循环替换远程的文本
#!/bin/bash
count="0"
for i in `cat ./list/USA`
do
echo $i
tmp=(count/3)
group=Asia_Group${tmp}
ssh nudt_iVCE@$i sed -i "s/USA_Group01/$group/g" /home/username/FTtest/FTRETRY/rbslave.xml
index=($tmp+1)
"ssh nudt_iVCE@$i sed -i "s/ssss/$index/g" /home/username/FTtest/FTRETRY/rbslave.xml"
done

目的是通过
ssh nudt_iVCE@$i sed -i "s/USA_Group01/$group/g" /home/username/FTtest/FTRETRY/rbslave.xml 来替换远程rbslave.xml中的内容。

但是执行的报了两个错:
1. 
sed: -e expression #1, char 32: unknown option to `s'

2.如果我把双引号改成但引号又会报找不到rbslave.xml文件。我估计是在本地找rbslave.xml了而不是远程。
如何解决这个问题呢?


------解决方案--------------------
探讨
ssh nudt_iVCE@$i sed -i "s/USA_Group01/$group/g" /home/username/FTtest/FTRETRY/rbslave.xml

------解决方案--------------------
我是来顶草的
------解决方案--------------------
我也来顶下啊
------解决方案--------------------
bash的算术错误
算术表达式应该由"$((" 和 "))" 括起
tmp=(count/3) 改成 tmp=$(($count/3)) 就可以了

附加:
错误发生的原因是:
tmp=(count/3)
group=Asia_Group${tmp}
得到的group是Asia_Groupcount/3 
替换s/USA_Group01/$group/g后得到s/USA_Group01/Asia_Groupcount/3/g
所以报错了