Bash比较两个元素,但无论如何都要执行语句

时间:2017-05-04 11:28:41

标签: bash if-statement comparison

为什么此处的陈述仍在执行?我想创建像切换器一样在本地更改文件主机,而无需手动更改我需要在实际站点上运行的任何内容。问题是,当我在脚本中使用-g选项时,它必须比较是否已经是站点名称前面的#并且在不更改任何内容的情况下退出。我在脚本之外使用它,它可以返回一个#,如果在主机中有,但正如我所说它无论如何都会执行该声明。

#!/bin/bash
  if [ "$1" = "-l" ]; then
    sed -i.bak --regexp-extended "s/#(127.0.0.1\s+$2)/\1/" /etc/hosts
    sed -i.bak --regexp-extended "s/#(127.0.0.1\s+www\.$2)/\1/" /etc/hosts
  elif [ "$1" = "-g" ]; then
      if [ "$(cat hosts | grep -P  "#127.0.0.1\s+$2" | grep -o "#")"="#" ] || [ "$(cat hosts | grep -P  "#127.0.0.1\s+www.$2" | grep -o "#")"="#" ]
        then
        exit
      else
        sed -i.bak --regexp-extended "s/127.0.0.1\s+$2/#&/" /etc/hosts
        sed -i.bak --regexp-extended "s/127.0.0.1\s+www.$2/#&/" /etc/hosts
      fi
  else
    echo "Syntax of use: virtualhost [-l] [-g] domain_name"
  fi

0 个答案:

没有答案