Buriavimas per „Linux BASH Scripting“ pasaulį - III dalis
Ankstesni sekantys „Shell Scripting“ serijos straipsniai buvo labai vertinami, todėl rašau šį straipsnį norėdamas pratęsti nesibaigiantį mokymosi procesą.
- Supraskite pagrindinius „Linux Shell“ scenarijų kalbos patarimus - I dalis
- 5 „Shell“ scenarijai, skirti „Linux“ naujokams išmokti „Shell“ programavimą - II dalis
Raktinis žodis yra žodis ar simbolis, turintis ypatingą reikšmę kompiuterio kalbai. Šie simboliai ir žodžiai turi ypatingą reikšmę „Bash“, kai jie nėra cituojami ir yra pirmasis komandos žodis.
! esac select } case fi then [[ do for until ]] done function while elif if time else in {
Skirtingai nuo daugumos kompiuterio kalbų, „Bash“ leidžia raktinius žodžius naudoti kaip kintamuosius pavadinimus, nors tai gali apsunkinti scenarijų skaitymą. Kad scenarijai būtų suprantami, raktiniai žodžiai neturėtų būti naudojami kintamųjų pavadinimams.
Komanda yra įdiegta apvalkale kaip $(komanda). Gali tekti įtraukti visą komandos kelią. pvz., & # 36 (/ bin/date), teisingam vykdymui.
Galite žinoti konkrečios programos kelią naudodami komandą ‘whereis’. pvz., kur data
whereis date date: /bin/date /usr/share/man/man1/date.1.gz
Kol kas to pakanka. Dabar apie šią teoriją daug nekalbėsime. Ateinu į scenarijus.
Perkelti dabartinį darbo katalogą
Pereikite iš dabartinio darbo katalogo į bet kurį aukštesnį lygį, vykdydami tiesiog nurodydami skaitinę vertę scenarijaus pabaigoje.
#! /bin/bash LEVEL=$1 for ((i = 1; i <= LEVEL; i++)) do CDIR=../$CDIR done cd $CDIR echo "You are in: "$PWD exec /bin/bash
Išsaugokite aukščiau nurodytus kodus darbalaukyje kaip „up.sh“. Padarykite jį vykdomuoju (chmod 755 up.sh). Vykdyti:
./up.sh 2 (perkels dabartinį darbo katalogą į du aukštyn).
./up.sh 4 (perkels dabartinį darbo katalogą į keturis lygius aukštyn).
Didesniuose scenarijuose, kuriuose yra aplankas aplanke ..., kuriame yra bibliotekos, dvejetainiai failai, piktogramos, vykdomieji failai ir tt skirtingoje vietoje, jūs, kaip kūrėjas, galite įgyvendinti šį scenarijų, kad labai automatizuotai persikeltumėte į norimą vietą.
Pastaba: For yra kilpa aukščiau esančiame scenarijuje ir ji bus vykdoma tol, kol kilpos reikšmės bus teisingos.
chmod 755 up ./up.sh 2 You are in: / ./up.sh 4 You are in: /
Sukurkite atsitiktinį failą ar aplanką
Sukurkite atsitiktinį failą (aplanką) be galimybės dubliuotis.
#! /bin/bash echo "Hello $USER"; echo "$(uptime)" >> "$(date)".txt echo "Your File is being saved to $(pwd)"
Tai yra paprastas scenarijus, bet jis nėra toks paprastas.
- ‘aidas’: išspausdina viską, kas parašyta kabutėse.
- ‘$’: yra kintamasis kintamasis.
- ‘>>’: išvestis nukreipiama į komandos data datą, po kurios tęsiasi txt plėtinys.
Mes žinome, kad datos komandos išvestis yra data ir laikas valandomis, minutėmis, sekundėmis kartu su metais. Taigi mes galėtume gauti išvestį iš organizuoto failo pavadinimo be galimybės dubliuoti failo pavadinimą. Tai gali būti labai naudinga, kai vartotojui ateityje reikalingas failas, sukurtas su laiko žyma.
./randomfile.sh Hello server Your File is being saved to /home/server/Desktop
Galite peržiūrėti failą, sukurtą darbalaukyje, naudodami Šiandienos datą ir dabartinį laiką.
nano Sat\ Jul\ 20\ 13\:51\:52\ IST\ 2013.txt 13:51:52 up 3:54, 1 user, load average: 0.09, 0.12, 0.08
Toliau pateikiamas išsamesnis aukščiau minėto scenarijaus įgyvendinimas, kuris veikia aukščiau nurodytu principu ir yra labai naudingas renkant „Linux“ serverio tinklo informaciją.
Scenarijus, skirtas rinkti tinklo informaciją
Renka tinklo informaciją „Linux“ serveryje. Scenarijus yra per didelis ir neįmanoma čia paskelbti viso scenarijaus kodo ir išvesties. Taigi, geriau atsisiųsti scenarijų naudodamiesi žemiau esančia atsisiuntimo nuoroda ir patys išbandyti.
Pastaba: gali tekti įdiegti „lsb-core“ paketą ir kitus reikalingus paketus bei priklausomybę. Apt arba Yum reikiamas pakuotes. Akivaizdu, kad turite paleisti scenarijų, nes dauguma čia naudojamų komandų yra sukonfigūruotos vykdyti kaip root.
./collectnetworkinfo.sh The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to [email _provider.com. ktop
Galite pakeisti aukščiau nurodytą el. Pašto adresą savo scenarijuje, kad jis būtų išsiųstas jums. Automatiškai sugeneruotą failą galima peržiūrėti.
Scenarijus paverčia didžiosiomis raidėmis mažąsias
Scenarijus, kuris konvertuoja „UPPERCASE“ į mažąsias raides ir nukreipia išvestį į tekstinį failą „small.txt“, kurį galima modifikuoti pagal poreikį.
#!/bin/bash echo -n "Enter File Name : " read fileName if [ ! -f $fileName ]; then echo "Filename $fileName does not exists" exit 1 fi tr '[A-Z]' '[a-z]' < $fileName >> small.txt
Šis aukščiau pateiktas scenarijus gali konvertuoti bet kokio ilgio failo atvejį vienu paspaudimu iš didžiųjų į mažąsias ir atvirkščiai, jei reikia, mažai modifikuojant.
./convertlowercase.sh Enter File Name : a.txt Initial File: A B C D E F G H I J K ...
Naujo failo (small.txt) išvestis:
a b c d e f g h i j k ...
Paprasta skaičiuoklės programa
#! /bin/bash clear sum=0 i="y" echo " Enter one no." read n1 echo "Enter second no." read n2 while [ $i = "y" ] do echo "1.Addition" echo "2.Subtraction" echo "3.Multiplication" echo "4.Division" echo "Enter your choice" read ch case $ch in 1)sum=`expr $n1 + $n2` echo "Sum ="$sum;; 2)sum=`expr $n1 - $n2` echo "Sub = "$sum;; 3)sum=`expr $n1 \* $n2` echo "Mul = "$sum;; 4)sum=`expr $n1 / $n2` echo "Div = "$sum;; *)echo "Invalid choice";; esac echo "Do u want to continue (y/n)) ?" read i if [ $i != "y" ] then exit fi done
./simplecalc.sh Enter one no. 12 Enter second no. 14 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 1 Sum =26 Do u want to continue (y/n)) ? y 1.Addition 2.Subtraction 3.Multiplication 4.Division Enter your choice 3 mul = 14812 Do u want to continue (y/n)) ? n
Taigi ar matėte, kaip lengva buvo sukurti tokią paprastą programą kaip skaičiavimus. Tai ne pabaiga. Sudarysime dar bent vieną šios serijos straipsnį, apimančią plačią perspektyvą administravimo požiūriu.
Kol kas viskas. Būdamas skaitytojas ir geriausias kritikas nepamirškite mums pasakyti, kiek ir kas jums patiko šiame straipsnyje ir ką norite pamatyti būsimame straipsnyje. Bet kuris klausimas yra labai sveikintinas komentare. Iki tol būkite sveiki, saugūs ir suderinti. Patinka ir dalinkitės mumis ir padėkite mums plisti.