1. ホーム
  2. bash

[解決済み] getoptsと位置パラメータを混在させることは可能ですか?

2023-06-17 19:39:59

質問

いくつかのスクリプトのラッパーとして、シェルスクリプトを設計したい。私は、パラメータを myshell.sh を使って getopts で、残りのパラメータを同じ順序で指定されたスクリプトに渡します。

もし myshell.sh のように実行されます。

myshell.sh -h hostname -s test.sh -d waittime param1 param2 param3

myshell.sh param1 param2 -h hostname param3 -d waittime -s test.sh

myshell.sh param1 -h hostname -d waittime -s test.sh param2 param3

として呼び出すことができるはずです。

test.sh param1 param2 param3

のオプションパラメータを利用することは可能でしょうか? myshell.sh のオプション・パラメータを利用し、残りのパラメータを基礎となるスクリプトにポストすることは可能ですか?

どのように解決するのですか?

私はOPと同様のことをしたいと思い、私は必要な関連情報を見つけました。 ここで はこちら

本来であれば、以下のようなことを行いたい場合。

script.sh [options] ARG1 ARG2

次に、このようにオプションを取得します。

while getopts "h:u:p:d:" flag; do
case "$flag" in
    h) HOSTNAME=$OPTARG;;
    u) USERNAME=$OPTARG;;
    p) PASSWORD=$OPTARG;;
    d) DATABASE=$OPTARG;;
esac
done

そして、このように位置引数を取得することができます。

ARG1=${@:$OPTIND:1}
ARG2=${@:$OPTIND+1:1}

詳細な情報および詳細は、上記のリンクから入手できます。

お役に立てれば幸いです!