1

我一直在尝试让多个不匹配的更改在 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]) ]]这也失败了。

4

1 回答 1

2

关于什么:

if [[ "$#" = "2" && "$1" =~ -[a-d]$ ]]
于 2012-09-08T08:20:21.573 回答