【发布时间】:2020-01-12 13:11:34
【问题描述】:
我遇到过一种情况,我用 ipv6 地址分配了一个变量,然后尝试通过将 ipv6 与方括号 [] 连接来执行操作。在其中一种情况下,bash 执行 [] 中存在的任何内容并将整个值替换为 1。
类似的东西
#!/bin/sh
llipv6=xxxx::xxxx:xxxx:xxxx:3a17%bond0
echo "/bin/bash -c "$REST_CLI serverlogs --url [$llipv6]""
当我运行脚本时,输出是
/bin/bash -c "abc.sh serverlogs --url 1
这里发生的另一件令人惊奇的事情是,如果我将 ipv6 地址的最后两位数更改为 19 以上,它会正确打印
llipv6=xxxx::xxxx:xxxx:xxxx:3a21%bond0
echo "/bin/bash -c "$REST_CLI serverlogs --url [$llipv6]""
输出是 /bin/bash -c "abc.sh serverlogs --url [xxxx::xxxx:xxxx:xxxx:3a21%bond0]
我不明白这里的问题。
我刚刚修改了连接 ipv6 的方式,如下所示,它似乎工作正常。
#!/bin/sh
llipv6=xxxx::xxxx:xxxx:xxxx:3a17%bond0
echo "/bin/bash -c "$REST_CLI serverlogs --url "[$llipv6]"""
请提出正确的方法。
提前致谢。
【问题讨论】:
-
大多数示例都有错字:您设置了
llipv6,但尝试回显llipv5。