我正在编写一个简单的脚本来收集2个IP地址。我正在使用开放堆栈客户端来收集提供商网络的分配池。我使用awk收集了2个IP地址(开始和结束),并将它们放入2个变量中。当我单独回显这两个变量时,它们会打印出我的期望值。但是,如果我尝试在变量后回显某些内容,则似乎替换了IP地址的前几个字符。
这很难解释,但是如果您参考输出,它应该更有意义。如果您在下面查看我的脚本,出于说明目的,我只在每个echo语句中的变量之后放置了字符串“ hello”。
#!/bin/bash
NETWORK=$1
#just gets the allocation pool IP addresses from openstack
ALLOCATION_POOLS=$(openstack subnet show $NETWORK --insecure|grep -w "allocation_pools"|awk -F " " '{print $4}')
POOL_START=$(awk -F "-" '{print $1}' <<< "$ALLOCATION_POOLS")
echo $POOL_START"hello"
POOL_END=$(awk -F "-" '{print $2}' <<< "$ALLOCATION_POOLS")
echo $POOL_END"hello"
以下是输出:
hello.146.87
hello.146.126
如果我没有在echo语句中添加“ hello”,则输出看起来像这样:
10.28.146.87
10.28.146.126
我做的另一件事是测试字符串的长度,该长度大于ip地址中的字符数。我相信导致此问题的IP地址后面有一些奇怪的字符。如果是这种情况,该如何删除?