1

簡単なbashスクリプトを作成しています。2つのオプション(-dと-f)を受け入れます。このオプションの長いバージョン(-directoryと-file)も許可したいと思います。中かっこワイルドカードを使用してみましたが、機能しません。助言がありますか?

ありがとう!

#!/bin/bash

while test $# != 0
do
  case $1 in
  -f)
    # do something
    ;;
  {-d,-directory})
    # do something
    ;;
  *)
    echo "error"
    ;;
  esac
  shift
done
4

2 に答える 2

4

パイプ記号を使用します。

case $1 in
    -f)
        # do something
        ;;
    -d|-directory)
        # do something
        ;;
    *)
        echo "error"
        ;;
 esac

caseステートメント内のさまざまなオプションはすべてシェルスクリプトパターンであり、パターン は実際にはこのパイプシンボルで区切られた複数のパターンにすることができます|。たとえば、このパターンで正規表現を使用することもできます

-[dD]|-directory)

、、およびの両方-dに一致します。-D-directory

于 2013-03-26T20:13:41.540 に答える
2

使用できます

-d|-directory)
    # do something
    ;;

ただし、のように「長いオプション」に一致させるためにダブルダッシュを使用することを検討する必要があります--directory

于 2013-03-26T20:15:50.023 に答える