root@yzrt-MS-7D20:/home/yzrt/xzq# a=`sed -n 2p qqqq`
root@yzrt-MS-7D20:/home/yzrt/xzq# echo $a
inet 192.168.79.230 netmask 255.255.255.0 broadcast 192.168.79.255
root@yzrt-MS-7D20:/home/yzrt/xzq# b=${a:5:18}
root@yzrt-MS-7D20:/home/yzrt/xzq# echo $b
inet 192.168.79
root@yzrt-MS-7D20:/home/yzrt/xzq#
如果还是无法实现,可以使用awk来切割
抱歉无法复现问题,建议再检查一下。
$ a="inet 192.168.79.230 netmask 255.255.255.0 broadcast 192.168.79.255"
$ echo $a
inet 192.168.79.230 netmask 255.255.255.0 broadcast 192.168.79.255
$ b=${a:5:18}
$ echo $b
192.168.79.230 net
难道前面还有一些不可见字符?
我在Ubuntu虚拟机中测试了, 采用的ip addr
命令, 读取字符串之后前面会有一个\t
, 在echo
之后不显示, 但是通过字符串分割会首先读取四个空格, 这就导致了你那边出现了问题, 建议先删除两头的空白字符.