Második rész ebből mini-oktatóanyag programozás Bash, ahol megtanuljuk használni ciklusok és egyéb eszközök, amelyek segítenek javítani a funkcionalitás szkriptek. |
Az If feltételes
Az If funkciója egy szűrő alkalmazása és egy művelet vagy feladat végrehajtása minden alkalmazott szűrőtípushoz. Szerkezete a következő:
Ha [feltétel]; majd elif parancsokat ad [feltétel]; akkor más parancsol; fi parancsok
Egy példa látható a For ciklus mellett, annak megfelelő szakaszában.
Ciklusok
1. While: mindaddig végrehajtja a do és a done között megadott parancsokat, amíg a feltétel igaz. Ha összehasonlító operátorokat akarunk átadni neki, akkor a kifejezésnek zárójelben kell lennie.
míg a CONDITION / COMMAND parancsokat végrehajtja
Példa: egy szám szorzótáblája
#! / bin / bash X = 1 visszhang "Írjon be egy számot, és nyomja meg az ENTER billentyűt" és olvassa el M # A hurok azt vezérli, hogy X kisebb vagy egyenlő, mint 10, míg [$ X –le 10] nem # R-ben tároljuk a szorzót X MR = $ [X * M] # Ez a szorzás a képernyőn van kinyomva: "$ M * $ X = $ R" #Hagyatékkal 1 egységgel növeljük az X értékét, hagyjuk, hogy X = $ X + 1 készen legyen
2. For: tárolja a változóban található elemek listáját, amelyek felhasználásával bizonyos műveleteket végeznek az egyes ciklusokkal.
for VARIABLE in ELEMENTS parancsokat hajtott végre
Példa: olyan program, amely egy fájlt átmásol egyik mappából egy másikba, egy régi fájlt helyettesítve.
# / bin / bash #Hozzuk létre a forrás és a célkönyvtárakat a # call FILE for FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f kiszűri a rendszeres fájlokat, mivel a könyvtárak #nincsenek jóak számunkra. –Nt nem szűr ki # fájlt „újonnan”, mint a célmappában található # fájl, ha [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; majd visszhangozzuk a "$ FILE másolása ..." # másoljuk a fájlt a következővel: cp cp $ FILE $ ARCH-DESTINATION fi done #We cd to exit the source folder cd
Egy másik példa: szkript, ahol a felhasználónak kitalálnia kell a számítógép által generált véletlenszerű számot.
# / bin / bash # Véletlenszám generálódik 1-től 10-ig, # elmentésre kerül a VÉLETLEN VÉLETLEN = $ [$ RANDOM% 10 + 1], míg [1] visszhangzik -n "Írjon be egy számot:" a NUM # számot olvassa Hasonlítsa össze, ha a felhasználó által választott szám #egyenlő a RANDOM értékkel; ne felejtsen el használni a $ értéket a változók # értékeinek értékelésére, nem pedig a nevükre, ha [“$ NUM –eq“ $ RANDOM ”]; majd visszhangzik: "Jól értetted!" A #break lehetővé teszi a hurok befejezését, míg a # törés, ha a szám kisebb, mint a RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; akkor visszhang "Kevesebb" "Ha nem, akkor nagyobb, mint a VÉLETLEN, más visszhang" IS nagyobb "
3. Until: felépítésében meglehetősen hasonló a While-hez, azzal a különbséggel, hogy a kód mindig végrehajtódik, míg a feltétel kiértékelése negatív, vagyis a program folytatja a "feltétel teljesülését"
amíg a CONDITION / COMMAND parancsokat nem hajtja végre
Példa: nyomtassa ki a 10-20-as számokat csökkenő sorrendben
#! / bin / bash CONT = 20 # Mindaddig, amíg a számláló 10-nél kisebb (-lt, "alacsonyabb #, mint"), a kódot [$ CONT -lt 10] -ig hajtják végre; do echo "COUNTER $ CONT" #A CONT-et kivonja egy egység, hagyja, hogy a CONT- = 1 kész legyen
4. Kiválasztás: ez az utolsó ciklus különleges eset, mivel általában a menük gyors elkészítésére használják. Hasonlóan működik, mint a For hurok.
válassza a VARIABLE lehetőséget a végrehajtott parancsok listáján
Példa: adja meg a felhasználónak a szkript folytatásának vagy befejezésének lehetőségét.
A #! / bin / bash #item egy olyan változó, amely válaszol arra, amit a # felhasználó választ, a Folytatás és Befejezés a # opció áll rendelkezésére, bár további lehetőségek is hozzáadhatók # további kiválasztott elem a Folytatás befejezéséhez c a program befejezéséhez, majd szünettel kilépünk a ciklusból. ha [$ item = "Befejezés"]; majd szünet kész
Szerintem valami ilyesmi: tar -cf - Directory | (cd / egyéb / könyvtár; tar -xvf -)
Akkor úgy néz ki, mint / másik / könyvtár / Directory
Így tömörítettem egy könyvtárat, és egy másik helyen dekompresszáltad….
Helló, jó tuto, megtanulom a témát, és minden rendben van, csak nem sikerült olyan programot készítenem, amely segít nekem, hátha tudsz segíteni nekem.
El kell végeznem egy ciklust, amelyben paraméterként megkapja a forrásfájl listáját, ez a lista csak neveket hoz (kiterjesztés nélkül), így a ciklus a következőket teszi, keresse meg az említett nevet egy könyvtárban (amely amelyet keresni fogunk), bontsa ki és másolja a fájlt (teljes név már kiterjesztéssel) és az abszolút elérési utat, majd hozza létre egy másik célfájlban.
Eddig a következővel rendelkezem:
miközben olvasta a sort
do
echo -e "$ line"
find / home / myuser / dof "$ line" -exec readlink -f {};
kész <testlist.txt Eddig elolvastam a fájlt, minden sorát, ami van, de nem tudom rávenni, hogy ezt a fájlt keresse meg, és kivonja az információkat, ha tudna segíteni, kérem, köszönöm. Egészségére
Nagyon köszönöm a hozzájárulást 🙂
szia ... remélem, hogy segíthet a következő gyakorlatban ... Csomagolja ki a fájlt a tgz-ben a megadott könyvtárban, azon felül, hogy megadja a felhasználót és a csoportot minden létező könyvtárhoz és fájlhoz, valamint engedélyeket rendel hozzá a fájlokhoz és könyvtárakhoz
megjegyzés: olvasásra és írásra kész fájlok
könyvtárak végrehajtási engedélye
Az ARCH-DESTINATION egy olyan változó, amelyben el akarjuk menteni a célfájl elérési útját, redundancia érdekében. Ezután ehhez a változóhoz megadjuk a DESTINATION változót, amely a fenti tartalmazza a Documents mappa elérési útját, és hozzáadjuk a "változó" FILE fájlt, amely a fájl nevét tartalmazza. Ha ez a fájl például a list.doc lenne, akkor az ARCH-DESTINATION változó egyenlő lenne a /home/Usuario/Documentos/listado.doc
Ez az előző cikk. A címen érheti el http://usemoslinux.blogspot.com
Ölelés! Pál.
Jó reggelt társ csak köszönöm, nagyon jó a blogod, de nem tudom megszerezni a Bash programozás első részét, ahol köszönet, üdvözlet
Két rendkívüli rész, őszinte gratulációm.
Egyszerűen csodálatos.
Bien
Szia, programot készítek egy CASE-val, mit akarok csinálni, és nem tudom, hogyan, például:
echo Válasszon egy lehetőséget:
visszhang
visszhang 1. opció
visszhang 2. opció
visszhang 3. opció
visszhang 4. opció
visszhang 5. Kilépés
olvasni var
"$ var" eset
1)
echo "Az 1. lehetőséget választotta"
;;
2)
echo "A 2. lehetőséget választotta"
;;
3)
kidobta "… .."
;;
4)
kidobta "…".
;;
5)
kidobta "…"
;;
*)
"rossz opció" visszhang
;;
hogy C
ok, amit nem tudom, hogyan kell csinálni, az az, hogy amikor kiválasztom a 4. lehetőséget, amely kilép, kérdezd meg, hogy valóban ki akarok-e lépni, és adj nekem 2 lehetőséget Y & N
a másik pedig az, hogy amikor az 1..5 számoktól eltérő dolgot választasz, ne szavazz rám a szkriptből ....
Tudna segíteni köszönöm.
Szia, 1 hónapja kezdtem el szkriptelni, és köszönöm a szkriptbejegyzéseidnek. Kb. 15-20-at tettem meg. Előre is köszönöm szépen. De most a tanárunk olyan munkát adott nekünk, amiben elakadtam. Mivel a tanár azt kérdezi:
átadva egy könyvtárat, másolja át otthonába az összes fájlt, amelyek abban a könyvtárban vannak, ábécé sorrendben, és nevezze el fájlként1 fájl2 stb ... stb ... stb.
Most a keresés vagy a keresés pillanatában vagyok, a find-ot akartam használni, de amikor hibakódot adtam neki, amint a dev null-ra tettem, az engedélyeket megtagadtam, akkor tévedek, és ide teszem a locate-t:
keresse meg $ 1 | grep "/ $ {1} \ $"
de természetesen ezzel mind kijönnek ...
Nagyon köszönöm, ha elolvasta.
Ha tudsz nekem segíteni, az nagy szívesség lenne.
Szeretném, ha ebben segítene.
1.-Írjon be egy egész számot a billentyűzeten, és kétszer jelenítse meg, és megháromszorozza ezt a számot a képernyőn. 2.- Készítsen egy programot annak eldöntésére, hogy a billentyűzet által beírt szám osztható-e 3-mal.
3.- Készítsen egy programot az alábbiak összegének megkeresésére: ????????? ?????????????????? ????????? ⋯? ???????
4.- Készítsen programot az 1 + 3 + 5 + 7 + 9 · · · + (2n + 1) összeg megtalálásához.
5.-Készítsen egy programot, amely tízszer kinyomtatja a Linux szót a képernyőn
6.-Készítsen egy programot, amely a felhasználó által megjelölt számú alkalommal kinyomtatja a képernyőn a Linux szót.
7.-Adjon meg egy összeget órákban, és alakítsa át percekre és másodpercekre.
8.-Számítsa ki a háromszög területét
9.-Írjon be egy számot a billentyűzeten, majd ha 2-t ír be, akkor négyzetre, 3 kockára, 4-ről negyedikre és így tovább kell írni 6-ig.
10-Számítsa ki a nyugdíjat, amelyet a hallgatónak fizetnie kell, meg kell adni a speciális kódot és a hátralékos napokat:
KÓD
KÜLÖNLEGESSÉG
ÖSSZEG
NAPI IDŐTARTAM
1
SZÁMÍTÁS
160
1
2
GONDOZÁS
150
1.5
3
TITKÁRSÁG
140
2
4
TURIZMUS
180
2.5
5
KÖNYVELÉS
160
1
Meg kell mutatnia a tanulmányozott szakterületet, a nyugdíj költségét, a nemteljesítést és a fizetendő teljes összeget.
Helló, tud valaki segíteni?
Szükségem van a következőre: "Kérjen három szót billentyűzettel, és ábécé sorrendben jelenítse meg A-tól z-ig"
Bash vagy sh nyelven a LINUX porfaborrrr