シェルスクリプトの「ダッシュ」パラメータ

シェルスクリプトの「ダッシュ」パラメータ

私が使用するほとんどのシェルスクリプトの構文は次のとおりです。

./shellscript.sh -first_argument_flag <first_argument_value> -second_argument_flag <second_argument_value>

ただし、シェルスクリプト作成者のためのすべてのオンラインリソースは、位置引数渡しについてのみ議論します。

./shellscript.sh <first_argument_value> <second_argument_value> 

後でスクリプトなどに使用されます"$1""$2"

位置引数の構文の代わりに、ユーザーフレンドリーな最初の構文を使用したいと思います。たとえば、-fフラグ付きのファイル名と-dフラグ付きのディレクトリをエコーするとします。このスクリプトに echofd.sh という名前を付けます。私の考えでは

./echofd.sh -f myfile.txt -d /my/directory/ 

出力を生成する

ファイルはmyfile.txtです。

あなたのディレクトリは/my/directory/です。

そして、スクリプトを呼び出すときに-fと-dの順序に関係なく。

ベストアンサー1

一部はgetopts標準(組み込み)ユーティリティPOSIXシェルでコマンドライン引数を解析するために使用されます。

次のテンプレートを使用できます。

#! /bin/sh -
PROGNAME=$0

usage() {
  cat << EOF >&2
Usage: $PROGNAME [-v] [-d <dir>] [-f <file>]

-f <file>: ...
 -d <dir>: ...
       -v: ...
EOF
  exit 1
}

dir=default_dir file=default_file verbose_level=0
while getopts d:f:v o; do
  case $o in
    (f) file=$OPTARG;;
    (d) dir=$OPTARG;;
    (v) verbose_level=$((verbose_level + 1));;
    (*) usage
  esac
done
shift "$((OPTIND - 1))"

echo Remaining arguments: "$@"

他の標準コマンドと同様に、標準的な方法で引数を解析します。たとえば、次のように呼び出すことができます。

myscript -vvv -f file -d dir other arg
myscript -ffile -ddir -- other arg

バラよりPOSIX仕様または詳細については、シェルのマニュアルを参照してください。

おすすめ記事