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ş:
Nasıl bir BASH değişken bir komut çıkt...
Nasıl Bash bir değişken için heredoc b...
Nasıl bir değişken adı almak için PHP ...
Bash: eğer herhangi bir komut başarısı...
Nasıl java uygulaması içinden vm değiş...