Druhá část toho mini-tutoriál programování v Praštit, kde se naučíme používat cyklů a další nástroje, které nám pomohou zlepšit naše funkce skripty. |
Podmíněná podmínka If
Funkce If je použít filtr a provést operaci nebo úkol pro každý typ použitého filtru. Jeho struktura je následující:
Pokud [podmínka]; pak příkazy elif [podmínka]; pak další příkazy; fi příkazy
Příklad je zobrazen vedle smyčky For v příslušné části.
Cykly
1. I když: provede všechny příkazy zadané mezi do a done, pokud je podmínka pravdivá. Pokud mu chceme předat operátory porovnání, musí být výraz v závorkách.
zatímco CONDITION / COMMAND provádí příkazy
Příklad: násobící tabulka čísla
#! / bin / bash X = 1 echo „Zadejte číslo a stiskněte klávesu ENTER“ přečtěte M # Smyčka řídí, že X je menší nebo rovno 10, zatímco [$ X –le 10] do #In R ukládáme násobení X by MR = $ [X * M] # Tato multiplikace je vytištěna na obrazovce echo "$ M * $ X = $ R" # S let, zvýšíme hodnotu X o 1 jednotku, ať X = $ X + 1 hotovo
2. Pro: ukládá seznam prvků do proměnné, která bude použita k provádění určitých operací s každým cyklem.
pro VARIABLE v ELEMENTS dělají příkazy hotové
Příklad: program, který kopíruje soubor z jedné složky do druhé a nahrazuje starý soubor.
# / bin / bash # Založíme zdrojové a cílové adresáře ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Umístíme se do zdrojového CD $ ORIGIN # Ze všech souborů chceme pouze ten, který is # call FILE for FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f nám filtruje běžné soubory, protože adresáře jsou pro nás # nic dobrého. –Nt neodfiltruje # souborů „novějších“ než ty, které se nacházejí v cílové složce, pokud [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; potom zopakujte „Kopírování $ SOUBOR ...“ # zkopírujeme soubor pomocí cp cp $ SOUBOR $ ARCH-DESTINATION hotovo #We cd pro opuštění zdrojové složky cd
Další příklad: skript, kde musí uživatel uhodnout náhodné číslo vygenerované počítačem.
# / bin / bash #Náhodné číslo je generováno od 1 do 10, je # uloženo v RANDOM RANDOM = $ [$ RANDOM% 10 + 1], zatímco [1] dělá echo –n "Zadejte číslo:" číst NUM # Porovnejte, pokud je počet zvolený uživatelem #equal to RANDOM; nezapomeňte použít $ k vyhodnocení #hodnot proměnných a nikoli jejich jmen, pokud [“$ NUM –eq„ $ RANDOM “]; pak ozvěte se „Máte pravdu!“ #break umožňuje ukončení smyčky při přerušení #Je-li počet menší než RANDOM elif [“$ NUM –gt„ $ RANDOM “]; potom ozvěna „Je to méně“ „Pokud ne, je větší než NÁHODNÉ, jinak echo„ JE TO větší “fi hotovo
3. Dokud: docela podobná struktura jako While, až na to, že se kód vždy provede, zatímco vyhodnocení podmínky je negativní, to znamená, že program pokračuje v provádění „dokud nedojde k podmínce“
dokud příkaz CONDITION / COMMAND neprovede příkazy
Příklad: vytiskněte čísla 10-20 v sestupném pořadí
#! / bin / bash CONT = 20 # Dokud je počítadlo menší než 10 (-lt, „nižší # než“), bude kód spuštěn do [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT je odečteno jednotkou, nechť CONT- = 1 hotovo
4. Vyberte: tento poslední cyklus je zvláštní případ, protože se obvykle používá k rychlému vytváření nabídek. Funguje podobně jako smyčka For.
vyberte VARIABILNÍ v SEZNAMU provedených příkazů
Příklad: dát uživateli možnost pokračovat nebo ukončit skript.
#! / bin / bash #item je proměnná, která reaguje na to, co si # uživatel vybere, Pokračovat a Dokončit jsou # možnosti, které má k dispozici, i když lze přidat další možnosti # více vybrat položku v Pokračovat Dokončit udělat # Pokud se uživatel rozhodne ukončíme program, pak s přestávkou opustíme cyklus. if [$ item = "Finish"]; pak je hotovo
Myslím něco takového: tar -cf - Directory | (cd / other / directory; tar -xvf -)
Pak by to vypadalo jako / another / directory / Directory
Takto jsem komprimoval adresář a vy jej dekomprimujete na jiném místě….
Dobrý den, dobře tuto, učím se o tom předmětu a všechno je v pořádku, jen jsem nebyl schopen vytvořit program, který mi pomáhá, aby zjistil, jestli mi můžete pomoci, prosím.
Musím udělat cyklus, ve kterém obdrží jako parametry seznam zdrojového souboru, tento seznam přináší pouze jména (bez přípony), takže cyklus provede následující, vyhledejte uvedený název přijatý v adresáři (což je ten, který budeme hledat), extrahujte a zkopírujte soubor (celé jméno již s příponou) a absolutní cestu a vytvořte jej v jiném cílovém souboru.
Zatím mám následující:
při čtení řádku
do
echo -e "$ line"
find / home / myuser / dof "$ line" -exec readlink -f {};
done <testlist.txt Zatím jsem si přečetl soubor, každý řádek, který má, ale nedokážu ho vyhledat a extrahovat informace, pokud mi můžete pomoci, prosím, děkuji. Na zdraví
Moc děkuji za příspěvek 🙂
ahoj ... Doufám, že v příštím cvičení pomůžete ... Rozbalte soubor v tgz v zadaném adresáři, kromě zadání uživatele a skupiny pro všechny existující adresáře a soubory a přidělení oprávnění souborům a adresářům
poznámka: soubory připravené ke čtení a zápisu
povolení ke spouštění adresářů
ARCH-DESTINATION je proměnná, do které chceme uložit cestu k cílovému souboru, kromě redundance. Potom do této proměnné označíme proměnnou DESTINATION, která výše obsahuje cestu ke složce Documents a přidáme „proměnnou“ FILE, která obsahuje název souboru. Pokud by tento soubor byl například list.doc, proměnná ARCH-DESTINATION by se rovnala /home/Usuario/Documentos/listado.doc
Je to předchozí článek. Můžete k nim přistupovat na adrese http://usemoslinux.blogspot.com
Objetí! Pavel.
Dobré ráno, kamaráde, jen děkuji, váš blog je velmi dobrý, ale nemohu dostat první část Programování v Bash, kde to dostanu díky, pozdravy
Dvě mimořádné části, upřímně vám gratuluji.
Prostě úžasné.
Bien
Ahoj, dělám program s PŘÍPADEM, co chci, aby udělal, a nevím jak, například:
echo Vybírá možnost:
minout
echo 1. možnost 1
echo 2. možnost 2
echo 3. možnost 3
echo 4. možnost 4
echo 5. Ukončit
číst var
případ "$ var" v
1)
echo "Vybrali jste možnost 1"
;;
2)
echo "Vybrali jste možnost 2"
;;
3)
vyhodil "….."
;;
4)
vyhodil "…."
;;
5)
vyhodil "…"
;;
*)
echo "špatná volba"
;;
že C.
ok, co nevím, jak to udělat, je to, že když vyberu možnost 4, která má odejít, zeptejte se, jestli opravdu chci odejít, a dejte mi 2 možnosti Y & N
a druhá je, že když vyberete něco jiného než čísla 1..5, nehlasujte pro mě ze skriptu….
Mohl byste mi pomoci díky?
Ahoj, začal jsem skriptovat před 1 měsícem a díky tvým příspěvkům ze skriptů. Udělám asi 15-20. Předem moc děkuji. Ale teď nám náš učitel dal práci, ve které jsem stagnoval. Jelikož se učitel ptá:
předání adresáře, zkopírujte do svého domova všechny soubory, které jsou v tomto adresáři abecedně, a pojmenujte je file1 file2 atd ... atd ...
Teď jsem v okamžiku hledání nebo vyhledání, chtěl jsem použít find, ale když mu dávám chybový kód, jako bych to dal přes dev null, oprávnění odepřena, pak se mýlím a uvedením lokalizace jsem zde:
vyhledejte $ 1 | grep "/ $ {1} \ $"
ale samozřejmě s tím všichni vyjdou ...
Děkuji vám, pokud jste si ji přečetli.
Pokud mi můžete pomoci, byla by to velká laskavost.
Byl bych rád, kdybys mi s tím pomohl.
1.-Zadejte celé číslo na klávesnici a zobrazte jej dvakrát a ztrojnásobte na obrazovce. 2. - Vytvořte program, který rozhodne, zda je číslo zadané pomocí klávesnice dělitelné 3 nebo ne.
3.- Vytvořte program pro zjištění součtu: ???????? + ???????? + ???????? ??? ??????? ???????
4. - Vytvořte program pro nalezení součtu 1 + 3 + 5 + 7 + 9 · · + (2n + 1).
5.-Vytvořte program, který vytiskne slovo Linux na obrazovku 10krát
6.-Vytvořte program, který vytiskne slovo Linux na obrazovku tolikrát, kolikrát uvede uživatel.
7.-Zadejte částku v hodinách a převeďte ji na minuty a sekundy.
8. - Vypočítejte plochu trojúhelníku
9. - Zadejte číslo pomocí klávesnice, pak pokud zadáte 2, mělo by to být na druhou, 3 krychle, 4 na čtvrté a tak dále až 6.
10 - Vypočítejte důchod, který musí student zaplatit, je třeba zadat speciální kód a dny zpětně:
KÓD
SPECIALITA
MNOŽSTVÍ
POČAS DENU
1
VÝPOČETNÍ
160
1
2
OŠETŘOVATELSTVÍ
150
1.5
3
SEKRETARIÁT
140
2
4
TURISTIKA
180
2.5
5
ÚČETNICTVÍ
160
1
Musíte prokázat studijní specializaci, náklady na důchod, výchozí hodnotu a celkovou částku, která má být zaplacena.
Dobrý den, může mi někdo pomoci?
Potřebuji «Požádat o tři slova pomocí klávesnice a zobrazit je v abecedním pořadí od A do z»
V jazyce Bash nebo sh pro LINUX porfaborrrr