SORU
15 AĞUSTOS 2011, PAZARTESİ


Nasıl bash script bayrakları ile değişken almak için

Kolayca bash bu gibi parametreleri yerleştirilmiş olduğunu biliyorum:

$0 $1

Böyle bayrak seçenekleri kullanabilmek için her parametre kullanılır ne için belirtmek istiyorum:

mysql -u user -h host

Yerine konumuna göre ile bayrak -u param değer -h param değeri elde etmek için en iyi yolu nedir?

CEVAP
15 AĞUSTOS 2011, PAZARTESİ


Bunu ben çok kullanırım deyim vardır:

while test $# -gt 0; do
        case "$1" in
                -h|--help)
                        echo "$package - attempt to capture frames"
                        echo " "
                        echo "$package [options] application [arguments]"
                        echo " "
                        echo "options:"
                        echo "-h, --help                show brief help"
                        echo "-a, --action=ACTION       specify an action to use"
                        echo "-o, --output-dir=DIR      specify a directory to store output in"
                        exit 0
                        ;;
                -a)
                        shift
                        if test $# -gt 0; then
                                export PROCESS=$1
                        else
                                echo "no process specified"
                                exit 1
                        fi
                        shift
                        ;;
                --action*)
                        export PROCESS=`echo $1 | sed -e 's/^[^=]*=//g'`
                        shift
                        ;;
                -o)
                        shift
                        if test $# -gt 0; then
                                export OUTPUT=$1
                        else
                                echo "no output dir specified"
                                exit 1
                        fi
                        shift
                        ;;
                --output-dir*)
                        export OUTPUT=`echo $1 | sed -e 's/^[^=]*=//g'`
                        shift
                        ;;
                *)
                        break
                        ;;
        esac
done

Önemli noktalar şunlardır:

  • $# bağımsız değişken sayısıdır
  • döngüye bakar iken bağımsız değişken, case deyimi içindeki değerleri eşleşen ilave edilir
  • shift ilk uzaklaştırır. Birden fazla değer almak için bir case deyimi içinde birden çok kez değiştirebilirsin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Random Act of Kindness Video Contest

    Random Act o

    18 EYLÜL 2012
  • mliskIT

    mliskIT

    29 Mart 2012
  • pucksz

    pucksz

    24 Mart 2006