$ 1と$ 2を使用してbashスクリプトにカスタムコマンドオプションを含める方法は?

$ 1と$ 2を使用してbashスクリプトにカスタムコマンドオプションを含める方法は?

スクリプトがありますmyscript.sh

#!/bin/sh

echo $1 $2

その目的は似ています...

./myscript.sh foo bar

これは私に出力を与える...

foo bar

しかし、このスクリプトにカスタムコマンドオプションを含めるにはどうすればよいですか?たとえば...

./myscript.sh -a foo and corespond to $1

そして

./myscript.sh -b bar and corespond to $2

答え1

使用する必要があります男1強い打撃:

小さな例:

#!/bin/bash

while getopts "a:b:" opt      # get options for -a and -b ( ':' - option has an argument )
do
    case $opt in
        a) echo "Option a: $opt, argument: $OPTARG";;
        b) echo "Option b: $opt, argument: $OPTARG";;
    esac
done

答え2

bashを使用しているシェルとしてリストしたので、次のように入力します。

$ help getopts

これにより、次のように印刷されます。

getopts:getopts optstring name [arg]
オプションパラメータを解析します。

シェルプロシージャはGetoptsを使用して、位置パラメータをオプションとして解析します。

OPTSTRINGには認識するオプション文字が含まれています。文字の後にコロンが続く場合、オプションには引数が必要で、スペースで区切る必要があります。

各呼び出しで、getoptsは次のオプションをシェル変数$ nameに配置し、nameが存在しない場合は初期化し、処理される次の引数のインデックスをシェル変数OPTINDに配置します。 OPTINDは、シェルまたはシェルスクリプトが呼び出されるたびに1に初期化されます。オプションに引数が必要な場合、getopts は引数をシェル変数 OPTARG に入れます。

Getoptsは通常、位置引数($ 0 - $ 9)を解析しますが、より多くの引数が指定された場合は代わりに解析されます。

関連:

  1. 選択チュートリアルを入手してください。
  2. getoptsがコマンドラインオプションを渡す方法
  3. Bashでgetoptを使用する方法
  4. Getopt、getopts、または手動解析?

関連情報