Skip to main content

Shell skript Linux Příklady cyklu BASH 'pro'

Buying Used Things (Smět 2025)

Buying Used Things (Smět 2025)
Anonim

BASH (což znamená Bourne Again Shell) je skriptovací jazyk používaný většinou operačních systémů Linux a UNIX.

Můžete spustit BASH příkazy v okně terminálu jeden po druhém, nebo můžete přidat příkazy do textového souboru pro vytvoření shell skriptu.

Skvělá věc o psaní shell skriptů je, že je můžete spustit znovu a znovu. Představte si například, že potřebujete přidat uživatele do systému, nastavit jejich oprávnění a spravovat výchozí prostředí. Můžete buď napsat příkazy na kus papíru a spustit je při přidávání nových uživatelů, nebo můžete napsat jediný skript a jen předat parametry do tohoto skriptu.

Skriptovací jazyky jako BASH mají podobné programovací konstrukty jako jiné jazyky. Můžete například použít parametry importu, abyste získali vstup z klávesnice a ukládali je jako proměnné. Potom můžete skript provést určitou akci založenou na hodnotě vstupních parametrů.

Klíčovou součástí každého programovacího a skriptovacího jazyka je schopnost opakovat a opakovat stejný kód.

Existuje několik způsobů, jak opakovat kód (také známý jako smyčky). V této příručce se zobrazí, jak napsat smyčku "pro".

A pro smyčka opakuje určitou část kódu znovu a znovu. Jsou užitečné, takže řada příkazů může pokračovat v chodu, dokud nebude splněna určitá podmínka, po které se zastaví.

V této příručce se vám zobrazí pět způsobů, jak použít smyčku pro použití v skriptu BASH.

Než začnete

Než začnete s příklady smyčky pro, musíte otevřít okno terminálu a postupujte takto:

  1. Zadejte mkdir skripty (dozvíte se více o mkdir zde).

  2. Zadejte cd skripty (změní se adresář na skripty ).

  3. Zadejte nano examplen.sh (kde n je příklad, na kterém pracujete).

  4. Zadejte skript.

  5. lis CTRL + O k uložení a CTRL + X k východu.

  6. Běh bash examplen.sh (opět s n jako příklad, s nímž pracujete).

Jak se slučovat skrze seznam

#! / bin / bashfor číslo v 1 2 3 4 5doecho $ numberdoneexit 0

BASH způsob používání smyček "pro" se poněkud liší od způsobu, jakým většina ostatních programovacích a skriptovacích jazyků zpracovává smyčky "pro". Pojďme si rozdělit skript.

V cyklu BASH "pro" všechny příkazy mezi dělat a Hotovo jsou prováděny jednou pro každou položku v seznamu.

Ve výše uvedeném příkladu je seznam všechno, co přichází za slovem v (tj. 1 2 3 4 5).

Pokaždé, když smyčka iteruje, je další hodnota v seznamu vložena do proměnné zadané za slovem "pro" . Ve výše uvedené smyčce je volána proměnná číslo .

Příkaz echo slouží k zobrazení informací na obrazovce.

Proto tento příklad přebírá čísla 1 až 5 a vystupuje je jeden po druhém na obrazovku:

  • 1
  • 2
  • 3
  • 4
  • 5

Jak slučovat mezi počátečním a koncovým bodem

Problém s výše uvedeným příkladem spočívá v tom, že pokud chcete zpracovat větší seznam (např. 1 až 500), mělo by to trvat několik let, kdybyste na prvním místě zadali všechna čísla.

To nás přivádí k druhému příkladu, který ukazuje, jak určit počáteční a koncový bod:

#! / bin / bashfor číslo v {1..10} doecho "$ number" doneexit 0

Pravidla jsou v podstatě stejná. Hodnoty za slovem " v" vytvoří seznam pro iteraci a každá hodnota v seznamu je umístěna v proměnné (tj. číslo) a pokaždé, když smyčka iteruje, příkazy mezi dělat a Hotovo jsou prováděny.

Hlavním rozdílem je způsob vytváření seznamu. Křivkové závorky {} v podstatě označují rozsah a rozsah je v tomto případě 1 až 10 (dvě tečky oddělují počátek a konec rozsahu).

Tento příklad proto prochází každým číslem mezi 1 a 10 a vyvede číslo na obrazovku následujícím způsobem:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Stejná smyčka mohla být napsána takto, se stejnou syntaxí jako první příklad:

pro číslo v 1 2 3 4 5 6 7 8 9 10

Jak přeskočit čísla v rozmezí

Předchozí příklad ukázal, jak slučovat mezi počátečním a koncovým bodem, takže se nyní podíváme na to, jak přeskočit čísla v rozsahu.

Představte si, že chcete smyčku mezi 0 a 100, ale zobrazovat pouze každé desáté číslo. Následující skript ukazuje, jak to udělat:

#! / bin / bashfor číslo v {0..100..10} doecho "$ number" doneexit 0

Pravidla jsou v podstatě stejná. K dispozici je seznam, proměnná a sada příkazů, které mají být provedeny mezi dělat a Hotovo . Seznam tentokrát vypadá takto: {0..100..10}.

První číslo je 0 a koncové číslo je 100. Třetí číslo (10) je počet položek v seznamu, které bude přeskočit.

Výše uvedený příklad proto zobrazuje následující výstup:

  • 0
  • 10
  • 20
  • 30
  • 40
  • 50
  • 60
  • 70
  • 80
  • 90
  • 100

Tradiční hledá smyčku

Typ BASH pro zápis smyček je v porovnání s jinými programovacími jazyky mírně podivný.

Můžete však napsat smyčku v podobném stylu jako programovací jazyk C, například:

# {bin / bashfor ((číslo = 1; číslo <100; číslo ++)) {if (($ number% 5 == 0)) thenecho "$ číslo je dělitelné 5"

Smyčka začíná nastavením čísla proměnné na hodnotu 1 (číslo = 1 ). Smyčka zůstane iterována, zatímco hodnota čísla je menší než 100 ( číslo <100 ). Hodnota číslo změnami přidáním 1 po každé iteraci ( číslo ++ ).

Všechno mezi kudrnatými příchytkami se provádí prostřednictvím každé iterace smyčky.

Bit mezi třmeny kontroluje hodnotu a číslo , Rozdělí ji 5 a porovná zbytek na 0. Je-li zbytek 0, pak číslo je dělitelné 5 a poté se zobrazí na obrazovce.

Například:

  • 5 je dělitelná 5
  • 10 je dělitelná číslem 5
  • 15 je dělitelná číslem 5

Pokud chcete změnit velikost kroku iterace, můžete změnit číslo ++ číslo = číslo + 2 , číslo = číslo + 5 , nebo číslo = číslo + 10 atd.

To lze dále omezit na číslo + = 2 nebo číslo + = 5 .

Praktický příklad

Pro smyčky může dělat více než opakovat seznam čísel. Ve skutečnosti můžete použít výstup ostatních příkazů jako seznam.

Následující příklad ukazuje, jak převést zvukové soubory z formátu MP3 do formátu WAV:

#! / bin / bashpro soubor v ./*.mp3dompg -w ./wavs/"${file}".wav "$ soubor" done

Seznam v tomto příkladu je každý soubor s příponou .MP3 v aktuální složce a proměnná je a soubor .

The mpg příkaz převede soubor MP3 do formátu WAV. Pravděpodobně je však nutné nejdříve nainstalovat pomocí správce balíčků.