短いオプションと長いオプションを解析するスクリプト(と呼びますscriptC
)がありますが、うまくgetopt
いきます。
スクリプトは次のように呼び出されます。
scriptA
正しいパラメータを使用して実行してscriptB
呼び出します。scriptC
scriptA
Q:実際のパラメータと同じパラメータを渡した後に渡すことはできますかscriptC
?これらのスクリプトは次
のように呼び出されます。
scriptB "$@"
scriptB
scriptC —param1 —param2
ベストアンサー1
scriptA
このように呼び出すとscriptB
scriptB "$@"
その後、呼び出し前にこれらの引数が変更されていない場合は、呼び出しに使用されたコマンドライン引数がscriptA
渡されます。scriptB
scriptB
からの通話も同じですscriptC
。
内容(または個々の場所引数など)を解釈、変更、または変更しようとしない限り、コマンドライン引数は解析用scriptA
に渡されます。scriptB
$@
$1
$2
$3
scriptC
getopt
スクリプトの代わりに関数を使用する例(同じ方法で動作):
#!/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
パラメータを使用または解釈します。getopt
getopts