1

私は、複数の一致しない変更を BASH で機能させようとしています。

これは私が一致させようとしているものです。2 つのパラメーターがあり、スイッチ (-a、-b、-c、-d) が最初のパラメーターである場合。

例:
./scriptname -a ファイル名
./scriptname -d ファイル名

これが成功したことをエコーし​​たいのは、./
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]) ]]これも失敗します。

4

1 に答える 1

2

どうですか:

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