getoptを使用しないスクリプトにgetopt引数を渡す

getoptを使用しないスクリプトにgetopt引数を渡す

短いオプションと長いオプションを解析するスクリプト(と呼びますscriptC)がありますが、うまくgetoptいきます。

スクリプトは次のように呼び出されます。
scriptA正しいパラメータを使用して実行してscriptB呼び出します。scriptC

scriptAQ:実際のパラメータと同じパラメータを渡した後に渡すことはできますかscriptC?これらのスクリプトは次
のように呼び出されます。
scriptB "$@"scriptBscriptC —param1 —param2

ベストアンサー1

scriptAこのように呼び出すとscriptB

scriptB "$@"

その後、呼び出し前にこれらの引数が変更されていない場合は、呼び出しに使用されたコマンドライン引数がscriptA渡されます。scriptB

scriptBからの通話も同じですscriptC

内容(または個々の場所引数など)を解釈、変更、または変更しようとしない限り、コマンドライン引数は解析用scriptAに渡されます。scriptB$@$1$2$3scriptCgetopt


スクリプトの代わりに関数を使用する例(同じ方法で動作):

#!/bin/sh

scriptC () {
    printf 'Arg: %s\n' "$@"
}

scriptB () {
    scriptC "$@"
}

scriptA () {
    scriptB "$@"
}

scriptA -param1 -param2

これにより出力が生成されます。

Arg: -param1
Arg: -param2

電話する

scriptA "hello world" --param1 /etc/passwd --param2

生産する

Arg: hello world
Arg: --param1
Arg: /etc/passwd
Arg: --param2

つまり、パラメータは変更なしでに渡されますscriptC。次に、scriptCパラメータを使用または解釈します。getoptgetopts

おすすめ記事