çalıştıran değişkende tutar Değişken değişken değerler içeren bir Bash komut dosyası oluşturabilir miyim? Örneğin, komut dosyası ilk kez çalıştırıldığında (belirli bir zaman sınırı sırasında) 0 ile bir değişkeni ilklendiririm ve değişken her defasında otomatik olarak artar.Bash Komut Dosyası'nda son değeri
cevap
bunu yapamazsınız, ancak bunu
#!/bin/sh
# if we don't have a file, start at zero
if [ ! -f "/tmp/value.dat" ] ; then
value=0
# otherwise read the value from the file
else
value=`cat /tmp/value.dat`
fi
# increment the value
value=`expr ${value} + 1`
# show it to the user
echo "value: ${value}"
# and save it for next time
echo "${value}" > /tmp/value.dat
Maalesef, durumu bir dosyaya kaydetmelisiniz. Hile, kullanıcının yazabileceği bir yere koymaktır.
yourscriptvar=0
if [ -e "$HOME/.yourscriptvar" ] ; then
yourscriptvar=$(cat "$HOME/.yourscriptvar")
fi
# do something in your script
#save it output the file
echo $yourscriptvar > "$HOME/.yourscriptvar"
İşte bir bash-ism: 'yourscriptvar = $ (<" $ HOME/.yourscriptvar ")'. Belge [burada] (http://www.gnu.org/software/bash/manual/bashref.html#Command-Substitution) –
Bunu sevdim ... Bunu bash hackery çantama koyacağım. teşekkürler –
Birkaç gün önce aynı problem vardı yapmak için bir dosyayı kullanabilirsiniz ve ben işi nedeniyle yapmak için kendi aracını yazdım Benzer bir şey yapmanın başka bir yolu yoktur.
gvar, her kullanıcının farklı bir veri koleksiyonuna sahip olduğu, saf bir Bash anahtar/değer deposu deposudur. Kayıtlar kullanıcının ev dizininde saklanır. İşte
öyle kaynak kodundan en ilginç fonksiyonları: bash komut
get_variable() {
cat $FILE | grep -w $1 | cut -d'=' -f2
}
set_variable() {
echo $1=$2 >> $FILE
}
remove_variable() {
sed -i.bak "/^$1=/d" $FILE
}
Huh. Böyle bir 'kütüphane' için hız için optimize edileceğini düşünürdünüz. Örneğin 'grep '' grep '' bir dosyayı argüman olarak alabildiğinden beri 'cat' gereksizdir. Ayrıca, eğer 'sürüs' ya da bir şey kullanmazsa bunun paralel yürütmede nasıl iyi işleyeceğini merak ediyorum. – Yeti
@Yeti tamamen haklısın, gvar sorunumu çözen bir oyuncak ama ben ileri gitmedim. İşaret ettiğin benzer şeyleri düşündüm. Teşekkürler. –
- 1. SIGPIPE'yi bash komut dosyasında yakalamanız önerilir mi?
- 2. Bash komut dosyasında çıkış kodu nasıl yazılır
- 3. Bash komut dosyasında özel karakterler yazdırma
- 4. Bash komut dosyasında bir değişkene erişme
- 5. Bash komut tüm ama son 5 dizinleri
- 6. BASH komut dosyasında bir uzak sistemde nasıl bir komut yürütürsünüz?
- 7. bir bash komut dosyasında zincirleme komutları (borular) ile işleme hatası?
- 8. Linux komut dosyasında bir ifadede -z değeri nedir? Bu komut
- 9. Linux terminali girişi: Bir bash komut dosyasında 4095 karakter sınırı
- 10. bash komut
- 11. bash: Komut
- 12. Bash komut dosyası eksik ']'
- 13. Bir bash komut dosyasında, kullanıcı girdisini nasıl temizlerim?
- 14. Bir bash komut dosyasında bulmanın sonuçlarını nasıl işleyebilirim?
- 15. Bir bash komut dosyasında satır numarasından başlayan satırları oku
- 16. Bir bash komut dosyasında dizin ağacı yazdırmaya nasıl gidebilirim?
- 17. Kabuk komut dosyasında değişkene komut kaydedilemiyor
- 18. Dönüş değeri komut
- 19. Bash komut dosyası: w3m dökümünü
- 20. Bash komut istemi kısaltması
- 21. Son eklenen satır kimliğine bir SQL komut dosyasında nasıl erişebilirim?
- 22. Bir komut dosyasında yürütülen komut yürütüldüğü zaman nasıl görüntülenir?
- 23. bash: print: komut bulunamadı
- 24. bash takma komut
- 25. Bash komut bulunmazsa
- 26. Bash komut dosyası okunmadı
- 27. Kendinden Daemonizing bash komut
- 28. -bash: yo: Komut 10.11.3
- 29. Git Bash bash: open: komut bulunamadı
- 30. Bir bash komut dosyasında, komut dosyasının çıktısının bir dosyaya yönlendirilip yönlendirilmediğini nasıl anlarım?
anahtar/değer veritabanı yazma; https://github.com/damphat/kv-bash :) – damphat