当前位置: 技术问答>linux和unix
远程sed替换文本的问题
来源: 互联网 发布时间:2016-08-17
本文导语: 我写了一个脚本目的是通过循环替换远程的文本 #!/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)...
我写了一个脚本目的是通过循环替换远程的文本
#!/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了而不是远程。
如何解决这个问题呢?
#!/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
所以报错了
算术表达式应该由"$((" 和 "))" 括起
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
所以报错了