This question already has answers here:
Comparing two IP Addresses in Bash
(2个答案)
2年前关闭。
我有两个bash变量
如果
在上面的示例中,测试应为
我写了下面的逻辑,但是没有用
其中$ 1持有$ checkVar中的第一个值,而$ 2持有第二个值。
在
(2个答案)
2年前关闭。
我有两个bash变量
$checkVar = 10.10.10.111 10.10.10.112 10.10.10.117
$Server = 10.10.10.114 10.10.10.112 10.10.10.113 10.10.10.111
如果
PASS
中仅存在$checkVar
中的前两个值,我想以$Server
进行测试在上面的示例中,测试应为
PASS
,因为$checkVar
10.10.10.111 10.10.10.112
中的前两个值出现在$Server
中我写了下面的逻辑,但是没有用
if [[ ${checkVar%%,*} = *"$Server"* ]]; then
test=pass
else
test=fail
fi
最佳答案
在您的if
语句中,${checkVar%%,*}
返回带有逗号的$checkVar
值并删除了尾随字符,这可能不是您想要的,因为$checkVar
根本不包含逗号。
另外,*"$Server"*
表达式仅返回一个字符串,在前导和尾随位置在$Server
后面附加文字星号,而不扩展任何内容。您将看到这些表达式的比较没有意义。
尝试类似以下内容:
#!/bin/bash
checkVar="10.10.10.111 10.10.10.112 10.10.10.117"
Server="10.10.10.114 10.10.10.112 10.10.10.113 10.10.10.111"
set -- $checkVar
if [[ " $Server " =~ [[:blank:]]$1[[:blank:]] && " $Server " =~ [[:blank:]]$2[[:blank:]] ]]; then
test=pass
else
test=fail
fi
echo "$test"
其中$ 1持有$ checkVar中的第一个值,而$ 2持有第二个值。
在
if
语句中,正则表达式测试$ 1和$ 2是否同时存在,并且每一个都被空格包围。关于linux - Bash:比较两个变量中的IP地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52462972/
10-12 04:11