为什么此处的陈述仍在执行?我想创建像切换器一样在本地更改文件主机,而无需手动更改我需要在实际站点上运行的任何内容。问题是,当我在脚本中使用-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