这是我脚本的一部分:
if [[ `hostname --fqdn` != '(\S+-laptop)' ]]; then
echo "Wrong node, run it on server"
exit 1
fi
echo "testing ok"
exit 0
这是结果:
++ hostname --fqdn
+ [[ mylinux1-laptop != \(\\\S\+\-\l\a\p\t\o\p\) ]]
+ echo 'Wrong node, run it on server'
Wrong node, run it on server
+ exit 1
我在在线工具上测试过并且工作过 - 无法理解为什么不在shell中...
感谢您的帮助。
答案 0 :(得分:1)
正确的BASH正则表达式语法是:
[[ ! "$(hostname --fqdn)" =~ [^[:space:]]+-laptop ]] && echo "Wrong node!" && exit 1
\S
不适用于BASH正则表达式引擎[^[:space:]]
匹配除空格=~
您也可以使用 shell glob 而不是正则表达式:
[[ "$(hostname --fqdn)" != [^\ ]*"-laptop" ]]