İçerik
- Çalışma zamanında bağımsız değişkenleri bir komut dosyasına aktarmak için iki yöntemden birini kullanın
- Bash Betikinde Bağımsız Değişken Geçme Örneği
- Bayraklar Yöntemi
- Colons için anlamlar
Çalışma zamanında bağımsız değişkenleri bir komut dosyasına aktarmak için iki yöntemden birini kullanın
Komut satırından komut dosyası çağrıldığında belirtilen bağımsız değişkenleri alacak şekilde bir Bash komut dosyası yazın. Bir komut dosyasının, giriş parametrelerinin değerlerine bağlı olarak biraz farklı bir işlev gerçekleştirmesi gerektiğinde, aynı zamanda argümanlar.
Bash Betikinde Bağımsız Değişken Geçme Örneği
Adlı bir komut dosyası geliştirdiyseniz stats.sh bir dosyadaki kelimeleri sayarsa, aynı komut dosyasının işlenecek tüm dosyalar için kullanılabilmesi için dosya adını argüman olarak iletmek en iyisidir. Örneğin, işlenecek dosyanın adı songlist.txt, komut satırına aşağıdakileri girin:
sh stats.sh songlist.txt
Bağımsız değişkenlere komut dosyası içinde değişkenler kullanılarak erişilir $1, $2, $3, ve bunun gibi. Değişken $1 ilk argümanı ifade eder, $2 ikinci tartışmaya ve $3 üçüncü tartışmaya. Örneğin, komut dosyasında:
DOSYA1 = $ 1
wc $ DOSYA1
İlk bağımsız değişkenin değerine açıklayıcı ada sahip bir değişken atayın ($1) yazın ve değişken üzerindeki kelime sayısı yardımcı programını (WC) çağırın $ DOSYA1.
Değişken sayıda bağımsız değişkene ihtiyacınız varsa, $@ tüm girdi parametrelerinin bir dizisi olan değişken. Bu yordam, aşağıdaki örnekte gösterildiği gibi, her birini yinelemeli olarak işlemek için bir for döngüsü kullanır:
"$ @" içindeki FILE1 için
yapmak
wc $ DOSYA1
tamam
Bu komut dosyasını komut satırından bağımsız değişkenlerle nasıl çağıracağınıza dair bir örnek:
sh stats.sh şarkı listesi1 şarkı listesi2 şarkı listesi3
Bir bağımsız değişken boşluk içeriyorsa, tek tırnak işareti içine alın. Örneğin:
sh stats.sh 'şarkı listesi 1' 'şarkı listesi 2' 'şarkı listesi 3'
Bayraklar Yöntemi
Genellikle bir komut dosyası yazılır, böylece argümanlar bayraklar kullanılarak herhangi bir sırada iletilebilir. Flags yöntemi ile bazı argümanlar isteğe bağlı yapılabilir.
Örneğin, belirli parametrelere dayalı olarak veritabanından bilgi alan bir komut dosyası yazın. Kullanıcı adı, tarih, ve ürün, ve belirtilen biçimde bir rapor oluşturur. Komut dosyası, komut dosyası çağrıldığında bu parametrelerin geçirileceği şekilde yazılmalıdır. Şöyle görünebilir:
makereport -u jsmith -p dizüstü bilgisayarlar -d 10-20-2011 -f pdf
Bash bu işlevselliği getopts işlevi. Yukarıdaki örnek için şunu kullanın: getopts aşağıdaki gibi:
getopts u: d: p: f: seçenek
yapmak
vaka "$ {option}"
içinde
u) KULLANICI = $ {OPTARG} ;;
d) TARİH = $ {OPTARG} ;;
p) ÜRÜN = $ {OPTARG} ;;
f) FORMAT = $ {OPTARG} ;;
esac
tamam
Bu, getopts işlev ve sözde SÇNDİZGESİ-bu durumda u: d: s: f:- argümanları yinelemek için. süre loop, argümanları iletmek için kullanılan bayrakları içeren optstring boyunca yürür ve bu bayrak için sağlanan argüman değerini değişkene atar seçenek. durum ifadesi daha sonra değişkenin değerini atar seçenek tüm değişkenler okunduktan sonra kullanılan bir global değişkene dönüştürür.
Colons için anlamlar
Seçimdeki iki nokta üst üste işaretleri, karşılık gelen bayraklar için değerlerin gerekli olduğu anlamına gelir. Yukarıdaki örnekte u: d: s: f:, tüm bayrakları iki nokta üst üste izler. Bu, tüm bayrakların bir değere ihtiyacı olduğu anlamına gelir. Örneğin, d ve f bayrakların bir değere sahip olması beklenmiyordu, u: dp: f tercih ederdim.
Seçimin başlangıcında bir iki nokta üst üste (örneğin, U: d: s: f:) tamamen farklı bir anlama sahiptir. Optstring'de temsil edilmeyen bayrakları işler. Bu durumda, seçenek değişken ? ve OPTARG değeri beklenmeyen bayrağa ayarlandı. Bu davranış, hatayı bildiren uygun bir hata iletisi görüntüler.
Bayraktan önce gelmeyen bağımsız değişkenler tarafından yoksayılır getopts. Komut dosyası çağrıldığında optstring'de belirtilen bayraklar sağlanmazsa, kodunuzda bu durumu özel olarak ele almadığınız sürece hiçbir şey olmaz. Tarafından ele alınmayan argümanlar getops hala normal ile yakalanabilir $1, $2, ve $3 değişkenler.