İkinci Bölüm bu mini eğitim programlama Cümbüş, kullanmayı öğrendiğimiz yer döngüleri ve işlevlerimizi geliştirmemize yardımcı olacak diğer araçlar scriptler. |
Koşullu ise
If'nin işlevi, bir filtre uygulamak ve uygulanan her filtre türü için bir işlem veya görev gerçekleştirmektir. Yapısı aşağıdaki gibidir:
Eğer [durum]; sonra elif komutları [koşul]; sonra başka komutlar; fi komutları
İlgili bölümünde For döngüsünün yanında bir örnek gösterilir.
Ciclos
1. While: Koşul doğru olduğu sürece do ve done arasında belirtilen tüm komutları çalıştıracaktır. Karşılaştırma işleçlerini ona iletmek istiyorsak, ifade parantez içinde olmalıdır.
CONDITION / COMMAND komutları yerine getirirken
Örnek: bir sayının çarpım tablosu
#! / bin / bash X = 1 echo "Bir sayı girin ve ENTER'a basın" M oku #Döngü, X'in 10'dan küçük veya eşit olduğunu kontrol ederken [$ X –le 10] #In R'nin çarpımını saklarız X ile MR = $ [X * M] # Bu çarpma ekrana yazdırılır echo "$ M * $ X = $ R" # İzin ver, X'in değerini 1 birim artıralım X = $ X + 1 tamam
2. İçin: her döngüde belirli işlemleri gerçekleştirmek için kullanılacak bir değişkendeki öğelerin listesini saklar.
ELEMENTS'deki DEĞİŞKEN için komutlar yapılır
Örnek: bir dosyayı bir klasörden diğerine kopyalayıp eski bir dosyayı değiştiren program.
# / bin / bash # Kaynak ve hedef dizinleri oluşturuyoruz ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Kendimizi kaynak cd $ ORIGIN # içinde konumlandırıyoruz. * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f bizi normal dosyaları filtreler, çünkü dizinler # bizim için iyi bir şey değildir. –Nt, [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION] ise, hedef klasörde bulunan # dosyadan “daha yeni” # dosyayı filtrelemez; sonra echo "$ FILE kopyalanıyor ..." # dosyayı cp ile kopyalıyoruz cp $ FILE $ ARCH-DESTINATION fi done # cd kaynak klasöründen çıkmak için cd
Başka bir örnek: kullanıcının bilgisayar tarafından oluşturulan rastgele bir sayıyı tahmin etmesi gereken komut dosyası.
# / bin / bash # 1'den 10'a kadar rastgele bir sayı üretilir, # RASGELE RASTGELE = $ [$ RANDOM% 10 + 1] olarak kaydedilirken [1] echo –n "Bir sayı girin:" NUM # oku Kullanıcı tarafından seçilen sayının # RASGELE'ye eşit olup olmadığını karşılaştırın; Değişkenlerin #değerlerini değerlendirmek için isimlerini değil, eğer [“$ NUM –eq“ $ RANDOM ”]; sonra echo "Doğru anladın!" #break, break sırasında döngünün sonlandırılmasına izin verir # Sayı RASGELE elif [“$ NUM –gt“ $ RANDOM ”] 'dan küçükse; then echo "Daha azdır" "Değilse, RASGELE'den büyüktür, aksi takdirde yankı" Daha büyüktür "fi bitti
3. Until: yapı olarak While'ye oldukça benzerdir, tek fark kodun her zaman koşulun değerlendirilmesi negatif iken yürütülmesi, yani program "koşul oluşana kadar" çalışmaya devam etmesidir.
CONDITION / COMMAND komutları yerine getirene kadar
Örnek: 10-20 sayılarını azalan sırada yazdırın
#! / bin / bash CONT = 20 # Sayaç 10'dan küçük olduğu sürece (-lt, "alt #than") kod [$ CONT -lt 10] 'a kadar çalıştırılır; do echo "COUNTER $ CONT" #A CONT bir birim tarafından çıkarılır CONT- = 1 bitsin
4. Seçin: Bu son döngü özel bir durumdur, çünkü genellikle menüleri hızlı bir şekilde yapmak için kullanılır. For döngüsüne benzer şekilde çalışır.
yapılan komutların LİSTESİNDE VARIABLE'ı seçin
Örnek: kullanıcıya komut dosyasını devam ettirme veya sonlandırma yeteneği verin.
#! / bin / bash #item, #user'ın seçtiği şeye yanıt veren bir değişkendir, Devam ve Bitir onun için mevcut olan seçeneklerdir, ancak diğer seçenekler eklenebilir # Devam Et'te daha fazla öğeyi seçin Bitir yap # Kullanıcı seçerse programı sonlandırın, ardından mola ile döngüden çıkıyoruz. eğer [$ item = "Finish"]; sonra bitirdim
Sanırım şöyle bir şey: tar -cf - Dizin | (cd / diğer / dizin; tar -xvf -)
Sonra / başka / dizin / Dizin gibi görünür
Bu şekilde bir Dizini sıkıştırdım ve siz onu başka bir yerde açarsınız….
Merhaba, iyi öğretici, konuyu öğreniyorum ve her şey yolunda, sadece bana yardım edip edemeyeceğinizi görmek için bana yardımcı olacak bir program yapamadım lütfen.
Parametre olarak bir kaynak dosyanın bir listesini alacağı bir döngü yapmam gerekiyor, bu liste sadece isimleri getiriyor (uzantısız), böylece döngü aşağıdakileri yapıyor, bir dizinde alınan adı arar ( aradığımız dosya), dosyayı (tam adı zaten uzantı ile) ve mutlak yolu çıkarın ve kopyalayın ve başka bir hedef dosyada oluşturun.
Şimdiye kadar aşağıdakilere sahibim:
satır okurken
do
echo -e "$ satır"
bul / home / kullanıcım / dof "$ satır" -exec readlink -f {};
done <testlist.txt Şimdiye kadar dosyayı, sahip olduğu her satırı okudum, ancak o dosyayı arayıp bilgiyi çıkaramıyorum, eğer bana yardım edebilirseniz lütfen teşekkür ederim. Şerefe
Katkı için çok teşekkür ederim 🙂
merhaba ... Umarım bir sonraki uygulamada yardımcı olabilirsiniz ... Tüm mevcut dizinler ve dosyalar için kullanıcı ve grup belirlemeye ek olarak, belirtilen dizindeki tgz'deki dosyayı açın ve dosyalara ve dizinlere izinler atayın
not: okunmaya ve yazmaya hazır dosyalar
dizin yürütme izni
ARCH-DESTINATION, hedef dosyanın yolunu kaydetmek istediğimiz bir değişkendir, fazlalığı affedin. Daha sonra, bu değişkene, yukarıda Belgeler klasörünün yolunu içeren DESTINATION değişkenini gösteriyoruz ve dosyanın adını içeren "değişken" FILE ekliyoruz. Bu dosya örneğin list.doc olsaydı, ARCH-DESTINATION değişkeni /home/Usuario/Documentos/listado.doc'a eşit olurdu.
Bir önceki makale. Şuradan erişebilirsiniz http://usemoslinux.blogspot.com
Sarıl! Paul.
Günaydın dostum sadece teşekkür ederim, blogunuz çok güzel, ancak Bash'te Programlamanın ilk bölümünü alamıyorum, buradan anladım teşekkürler, selamlar
İki olağanüstü kısım, içten tebriklerimi sunarım.
Sadece harika.
Bien
Merhaba, CASE ile bir program yapıyorum, ne yapmasını istiyorum ve nasıl yapılacağını bilmiyorum, örneğin:
echo Bir seçenek belirler:
kaçırmak
yankı 1. seçenek 1
yankı 2. seçenek 2
yankı 3. seçenek 3
yankı 4. seçenek 4
echo 5. Çıkış
var oku
durumda "$ var"
1)
echo "1. seçeneği seçtiniz"
;;
2)
echo "2. seçeneği seçtiniz"
;;
3)
"… .."
;;
4)
"…."
;;
5)
attı "..."
;;
*)
echo "yanlış seçenek"
;;
esac
Tamam, nasıl yapacağımı bilmediğim, 4. seçeneği seçtiğimde, yani çıkmak için, gerçekten çıkmak isteyip istemediğimi sorup bana 2 seçenek E & H ver
diğeri ise 1..5 rakamlarından başka bir şey seçtiğinizde senaryodan bana oy vermeyin….
Bana yardım eder misin teşekkürler
Merhaba, komut dosyası yazmaya 1 ay önce başladım ve senaryo yazılarınız sayesinde 15-20 civarında yapmış olacağım. Şimdiden çok teşekkür ederim. Ama şimdi öğretmenimiz bize durgunlaştığım bir iş verdi. Öğretmen sorduğu için:
bir dizini geçmek, o dizinde bulunan tüm dosyaları alfabetik olarak evinize kopyalayın ve onlara dosya1 dosya2 vb ... vb.
Şimdi bul veya bul anındayım, bul'u kullanmak istedim ama dev null'a koyduğum gibi hata kodunu verirken, izinler reddedildi ve sonra yanlış anladım ve buradayım konum bilgisini koyuyorum:
$ 1 bulun | grep "/ $ {1} \ $"
ama elbette bununla hepsi ortaya çıkıyor ...
Okursanız çok teşekkür ederim.
Bana yardım edebilirsen bu büyük bir iyilik olur.
Bana bu konuda yardım etmeni istiyorum.
1.-Klavyede bir tam sayı girin ve ekranda bu sayıyı iki kez ve üçe katlayın. 2.- Klavye ile girilen bir sayının 3'e bölünebilir olup olmadığına karar vermek için bir program yapın.
3.- Aşağıdakilerin toplamını bulmak için bir program yapın: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
4.- 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) toplamını bulmak için bir program yapın.
5.-Linux kelimesini ekrana 10 kez yazdıran bir program yapın
6.-Linux kelimesini bir kullanıcının belirttiği sayıda ekrana yazdıran bir program yapın.
7.-Saat cinsinden bir miktar girin ve dakikaya ve saniyeye çevirin.
8.-Bir üçgenin alanını hesaplayın
9.-Klavyede bir sayı girin, sonra 2 girerseniz kare, 3'ün küpü, 4'ün dördüncü ve 6'ya kadar devam etmesi gerekir.
10-Öğrencinin ödemesi gereken emeklilik maaşını, uzmanlık kodunu girmesi gereken, ödenmemiş günleri hesaplayın:
KOD
UZMANLIK
MİKTAR
GÜN BOYUNCA
1
BİLGİ İŞLEM
160
1
2
HEMŞİRELİK
150
1.5
3
SEKRETERYA
140
2
4
TURİZM
180
2.5
5
MUHASEBE
160
1
Çalıştığınız uzmanlığı, emekli maaşının maliyetini, varsayılanı ve ödenecek toplam tutarı göstermelisiniz.
Merhaba, birisi bana yardım edebilir mi?
"Klavye ile üç kelime isteyin ve bunları A'dan z'ye alfabetik sırayla görüntüleyin" e ihtiyacım var
LINUX porfaborrrr için Bash veya sh dilinde