Getopt::Long を使用する Perl スクリプトにシェル スクリプトを変換しています。スクリプトへの唯一の引数が単一のファイルである場合、そのファイルが構成ファイルとして使用される以下のケースとの互換性を維持したいと考えています。一方、通常はパラメーターを GetoptLong に取得します。
if [[ $# -eq 1 && -f $1 ]];
then
echo "Using config file $1"
[...]
else
if [ $# -lt 2 ]; then usage "INCORRECT NUMBER OF PARAMETERS"; fi
while getopts ":a:b:c:d:ef" opt;
do
[...]
if/else
1 つのオプションは、次のように Perl スクリプトでを維持することです。
if (1 == @ARGV && -f $ARGV[0]) {
# use this config file
config_file_method($ARGV[0]);
} else {
# use GetOptions
GetOptions(
'a|foo:s' => \$foo,
'b|bar:s' => \bar,
[...]
);
}
しかし、この特殊なケースを魔法のように GetOptions 関数に含めることができるのではないかと思います。
GetOptions(
'if only one element in @ARGV' => 'call config_file_method($ARGV[0])',
'a|foo:s' => \$foo,
'b|bar:s' => \bar,
[...]
);
何か案は?