Bash'daki getopts kullanarak komut satırı argümanlarını işlemeye çalışıyorum. Gereksinimlerden biri isteğe bağlı sayıda argümanların işlenmesi içindir (alıntıların kullanımı olmadan).Getopts (bash) kullanarak çoklu seçenek argümanları (bash)
1 örnek (sadece 1 argüman kapar)
madcap:~/projects$ ./getoptz.sh -s a b c
-s was triggered
Argument: a
2 örneği (Ben bu gibi davranır ama argüman"
madcap:~/projects$ ./getoptz.sh -s "a b c"
-s was triggered
Argument: a b c
alıntı gerek kalmadan istediğiniz bir yolu var mı ? İşte
kod bunu yapmak Şimdi sahip:#!/bin/bash
while getopts ":s:" opt; do
case $opt in
s) echo "-s was triggered" >&2
args="$OPTARG"
echo "Argument: $args"
;;
\?) echo "Invalid option: -$OPTARG" >&2
;;
:) echo "Option -$OPTARG requires an argument." >&2
exit 1
;;
esac
done
Bu yardımcı olabilir: http://stackoverflow.com/a/7530327/1983854 – fedorqui
Daha fazla bilgi gereklidir. Getoptz.sh -s a -b c' verildiğinde hangi davranışı istiyorsunuz? '-b' -s' için bir argüman mı, yoksa' -' yeni bir seçeneği mi gösteriyor? –
İlgili, ama hiçbir suretle, [Her seçenek için farklı seçenekler ve farklı argümanlar ile farklı programlar çağırma] (http://stackoverflow.com/questions/15442950/). Genel olarak, standart komut arabirimi yönergelerini kullanmak en iyisidir [POSIX Yardımcı Programları] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) –