シェルスクリプトを実行するときに順番に入力しなくても特定の位置引数を渡すことはできますか?

シェルスクリプトを実行するときに順番に入力しなくても特定の位置引数を渡すことはできますか?

たとえば、10個のパラメータを必要とする./fooスクリプトがあり、8番目のパラメータのみを渡したいとします。現在私が知っている唯一の方法は次のとおりです。

./foo '' '' '' '' '' '' '' 'bar'

より簡単でより良い方法がありますか?

ベストアンサー1

スクリプトを変更できると仮定すると、必須パラメータ(パラメータ)の代わりにオプションのパラメータ(オプション)を使用することを検討する必要があります。

最初の7つのパラメータをそれぞれオプションとして使用し、デフォルトで空の文字列を使用する場合は、次のことができます。

./foo bar

使用する場合POSIX互換シェル使用できるgetoptsユーティリティまたはプログラムgetoptbash- ほとんどのシェルと同様に - 組み込みgetoptsで提供されます。どちらも自分のコマンドラインパーサーを実行するよりも簡単です。

最後のX非オプションパラメータなどを実装しない限り、最後のYパラメータの値とオプション文字列を提供します。しかし、これは一般的な慣行ではなく、通常、オプションは常にオプションであり、引数は常に引数であり、オプションが「挿入」される順序は自由です。

おすすめ記事