我一直在尝试让多个不匹配的更改在 BASH 中工作。
这是我试图不匹配的。如果有两个参数并且一个开关(-a,-b,-c,-d)是第一个参数。
示例:
./scriptname -a 文件名
./scriptname -d 文件名
我希望这个回应成功的是:
./scriptname 文件名 ipaddress。
有效的代码是:
if [[ "$#" = "2" && "$1" =~ ([^-a][^-b][^-c]) ]]
then
echo "success"
else
echo "fail"
fi
如果我尝试扩展更改,([^-a][^-b][^-c][^-d])
它将停止工作。我尝试了多种语法变体,但似乎没有任何效果。我还尝试将它们组合在一起,例如:
if [[ "$#" = "2" && "$1" =~ ([^-a][^-b]) && "$1" =~ ([^-c][^-d]) ]]
这也失败了。