我一直试图让多个不匹配的改动在BASH中工作。
这是我想要的不匹配。如果有两个参数且一个开关(-a,-b,-c,-d)是第一个参数。
例:
./scriptname-a filename
./scriptname-d filename
我希望这与成功相呼应的是:
./scriptname filename 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]) ]]
这也失败了。
答案 0 :(得分:2)
怎么样:
if [[ "$#" = "2" && "$1" =~ -[a-d]$ ]]