Saya menerjemahkan skrip shell ke skrip Perl yang menggunakan Getopt::Long, dan saya ingin menjaga kompatibilitas dengan kasus di bawah ini di mana, jika satu-satunya argumen pada skrip adalah satu file, file tersebut digunakan sebagai file konfigurasi, sedangkan yang biasa adalah memasukkan parameter ke 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
[...]
Salah satu pilihannya adalah mempertahankan if/else
dalam skrip Perl seperti:
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,
[...]
);
}
Tapi saya ingin tahu apakah kasus khusus ini dapat dimasukkan dalam fungsi GetOptions dengan keajaiban:
GetOptions(
'if only one element in @ARGV' => 'call config_file_method($ARGV[0])',
'a|foo:s' => \$foo,
'b|bar:s' => \bar,
[...]
);
Ada ide?
==
membandingkan angka. Angka adalah skalar, jadi==
yang diterapkan adalah konteks skalar pada argumennya. Setiap contohscalar
yang Anda miliki tidak ada gunanya. - person ikegami   schedule 26.09.2013