Bash'de Programlama - Kısım 2

İ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
Teşekkürler Juan Carlos Ortiz!

Makalenin içeriği şu ilkelerimize uygundur editoryal etik. Bir hata bildirmek için tıklayın burada.

13 yorum, sizinkini bırakın

Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak.

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   Orta Zor dijo

    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….

  2.   Miguel Angel dijo

    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

  3.   Pamela galaviz dijo

    Katkı için çok teşekkür ederim 🙂

  4.   Mario Xavier dijo

    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

  5.   johnk dijo

    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.

  6.   Hadi Linux kullanalım dijo

    Bir önceki makale. Şuradan erişebilirsiniz http://usemoslinux.blogspot.com

    Sarıl! Paul.

  7.   dürüst dijo

    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

  8.   Saito Mordraw dijo

    İki olağanüstü kısım, içten tebriklerimi sunarım.

    Sadece harika.

  9.   Fredy dijo

    Bien

  10.   Hugo dijo

    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

  11.   DAPAMA21 dijo

    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.

  12.   luis dijo

    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.

  13.   charly dijo

    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