shell脚本替换指定位置字符串错误? 10

我需要把44455548666777中的第7个字符换成2,为什么当第7个字符为4的时候,会替换到前面的4?第7个字符为其他的时候就不会?S_CODE=4445554866... 我需要把44455548666777中的第7个字符换成2,为什么当第7个字符为4的时候,会替换到前面的4?第7个字符为其他的时候就不会?
S_CODE=44455548666777
S_CODE_NEW=${S_CODE/${S_CODE:6:1}/2}
运行结果如下:
如果是4
/tmp # sh locator_site_code.sh
44455548666777
24455548666777
如果是其他就不会错
/tmp # sh locator_site_code.sh
44455568666777
44455528666777

/tmp # cat locator_site_code.sh
#!/bin/sh
#非经营性上网服务场所,改第7固定为2
S_CODE=$(nvramcli show | grep locator_site_code | cut -b 19-)
echo "${S_CODE}"
S_CODE78=$(nvramcli show | grep locator_site_code |cut -b 25-26)
S_CODE_NEW=${S_CODE/${S_CODE:6:1}/2}

if [ ${S_CODE78} = 39 ]
then
echo "site_code is 39!"
else
nvramcli set locator_site_code=${S_CODE_NEW}
echo "${S_CODE_NEW}"
fi
nvramcli commit
展开
 我来答
司马刀剑
高粉答主

2018-05-22 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7125万
展开全部
用sed命令。
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`
例如:我要把man替换为hun,执行命令:sed -i "s/man/hun/g" 'grep man -rl /www'
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式