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 展开
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 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询