Bash:检查主机名是否为v-q *如何使用通配符?

前端之家收集整理的这篇文章主要介绍了Bash:检查主机名是否为v-q *如何使用通配符?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有下一个代码,如果主机名与v-qai01或任何其他v-q *服务器匹配,我需要它回显1:
  1. if [ `hostname -s` -eq `v-q*` ]; then
  2. echo "1"
  3. fi

我有几个错误

  1. ./run.sh: line 3: v-q*: command not found
  2. ./run.sh: line 3: [: v-qai01: unary operator expected

有什么建议吗

如果我有下一个病例怎么办?

  1. hostname=`hostname -s`
  2.  
  3. portalesWildcard=v-*ws*
  4. qaiservers={'v-qai01' 'v-qai02'}
  5. portales={'t1wsyellar01' }
  6.  
  7.  
  8. if [[ ${hostname} = ${qaiservers} ]]; then
  9. echo "yes"
  10. fi

谢谢

使用双方括号,=运算符将接受通配符:
  1. #!/bin/bash
  2.  
  3. if [[ $(hostname -s) = v-q* ]]; then
  4. ...
  5. fi

当您需要更多高级字符串匹配时,它还具有用于正则表达式匹配的=〜运算符。这将检查主机名也以一个或多个数字结尾:

  1. #!/bin/bash
  2.  
  3. if [[ $(hostname -s) =~ ^v-q.*[0-9]+$ ]]; then
  4. ...
  5. fi

猜你在找的Bash相关文章