3

パラメータを受け入れるbashスクリプトを書いています。私はそれを達成するためにgetoptsを使用しています。

#!/bin/bash

while getopts ":a" opt; do
  case $opt in
    a)
      echo "-a was triggered!" >&2
      ;;
    \?)
      echo "Invalid option: -$OPTARG" >&2
      ;;
  esac
done

しかし、上記のコードは私にこのエラーを返します。

'etOpts_test.sh: line 4: syntax error near unexpected token `in
'etOpts_test.sh: line 4: `  case $opt in

CentOs5.5を使用しています

4

2 に答える 2

2

引数を必要とするフラグを示すには、 :aではなく、:にする必要があります。また、疑問符は、ワイルドカード記号として機能するため、引用符で囲んではなりません。全体的なコードは次のようになります (フラグ-hが引数を取らないことも示しています)。

function usage {
  echo "usage: ..."
}

a_arg=
while getopts a:h opt; do
  case $opt in
    a)
      a_arg=$OPTARG
      ;;
    h)
      usage && exit 0
      ;;
    ?)
      usage && exit 2
      ;;
  esac
done
于 2011-12-19T12:04:22.527 に答える
2

4行目でおそらく必要ですcase "$opt" in(引用$opt)。そうしないと、メタ文字が含まれていると失敗する可能性があります。

于 2011-12-19T11:56:41.880 に答える