たとえば、10個のパラメータを必要とする./fooスクリプトがあり、8番目のパラメータのみを渡したいとします。現在私が知っている唯一の方法は次のとおりです。
./foo '' '' '' '' '' '' '' 'bar'
より簡単でより良い方法がありますか?
ベストアンサー1
スクリプトを変更できると仮定すると、必須パラメータ(パラメータ)の代わりにオプションのパラメータ(オプション)を使用することを検討する必要があります。
最初の7つのパラメータをそれぞれオプションとして使用し、デフォルトで空の文字列を使用する場合は、次のことができます。
./foo bar
使用する場合POSIX互換シェル使用できるgetopts
ユーティリティまたはプログラムgetopt
。bash
- ほとんどのシェルと同様に - 組み込みgetopts
で提供されます。どちらも自分のコマンドラインパーサーを実行するよりも簡単です。
最後のX非オプションパラメータなどを実装しない限り、最後のYパラメータの値とオプション文字列を提供します。しかし、これは一般的な慣行ではなく、通常、オプションは常にオプションであり、引数は常に引数であり、オプションが「挿入」される順序は自由です。