Purjetamine läbi Linuxi BASH-skriptide maailma - III osa


Eelmised järgmised sarja „Shell Scripting” artiklid olid kõrgelt hinnatud ja seetõttu kirjutan selle artikli, et laiendada õppimise lõputut protsessi.

  1. Mõistke põhilisi Linuxi šelli skriptikeele näpunäiteid - I osa
  2. 5 Shelli skripti Linuxi algajatele, et õppida Shelli programmeerimist - II osa

Märksõna on sõna või sümbol, millel on arvutikeele jaoks eriline tähendus. Järgmistel sümbolitel ja sõnadel on Bashi jaoks eriline tähendus, kui need on tsiteerimata ja käsu esimene sõna.

! 			esac 			select 		} 
case 			fi 			then 		[[ 
do 			for 			until 		]] 
done 			function 		while 		elif
if 			time 			else 		in 		{

Erinevalt enamikust arvutikeeltest lubab Bash märksõnu kasutada muutujana, ehkki see võib skripte raskesti lugeda. Skriptide arusaadavuse tagamiseks ei tohiks muutujate nimede jaoks kasutada märksõnu.

Käsk on shellis rakendatud kui $(käsk). Võimalik, et peate lisama kogu käsu tee. nt korrektseks täitmiseks & # 36 (/ bin/date).

Võimalik, et teate konkreetse programmi teed käsuga ‘whereis’. nt kus on kuupäev

 whereis date
date: /bin/date /usr/share/man/man1/date.1.gz

Praegu piisab sellest. Me ei räägi sellest teooriast nüüd palju. Tulles skriptide juurde.

Teisalda praegune töökataloog

Liikuge praegusest töökataloogist mis tahes tasemele ülespoole, sisestades lihtsalt skripti lõpus arvväärtuse käivitamise ajal.

#! /bin/bash 
LEVEL=$1 
for ((i = 1; i <= LEVEL; i++)) 
do 
CDIR=../$CDIR 
done 
cd $CDIR 
echo "You are in: "$PWD 
exec /bin/bash

Salvestage ülaltoodud koodid töölauale kui "up.sh". Muutke see käivitatavaks (chmod 755 up.sh). Käivita:

./up.sh 2 (teisaldab praeguse töökataloogi kahele tasemele ülespoole).
./up.sh 4 (teisaldab praeguse töökataloogi neljale tasemele ülespoole).

Suuremates skriptides, mis sisaldavad kausta sees asuvat kausta ..., mis sisaldab erinevas asukohas asuvaid teeke, binaarfaile, ikoone, käivitatavaid faile jms, saate arendajana rakendada seda skripti soovitud asukohta liikumiseks väga automatiseeritud viisil.

Märkus. For on silmus ülaltoodud skriptis ja selle täitmine jätkub seni, kuni silmuse väärtused vastavad tõele.

 chmod 755 up
 ./up.sh 2
You are in: /

 ./up.sh 4 
You are in: / 

Looge juhuslik fail või kaust

Looge juhuslik fail (kaust) ilma dubleerimise võimaluseta.

#! /bin/bash

echo "Hello $USER";
echo "$(uptime)" >> "$(date)".txt
echo "Your File is being saved to $(pwd)"

See on lihtne skript, kuid see ei ole nii lihtne.

  1. ‘kaja’: prindib kõik jutumärkides kirjutatu.
  2. ‘$’: on shellimuutuja.
  3. ‘>>’: väljund suunatakse käsu date väljundisse, millele järgneb laiendus txt.

Me teame, et kuupäeva käsu väljundiks on kuupäev ja kellaaeg tundides, minutites, sekundites koos aastaga. Seega võiksime saada väljundi organiseeritud failinimelt ilma failinime dubleerimise võimaluseta. See võib olla väga kasulik, kui kasutaja vajab tulevikus ajatempliga loodud faili.

 ./randomfile.sh  
Hello server 
Your File is being saved to /home/server/Desktop

Töölaual loodud faili saate vaadata tänase kuupäeva ja praeguse kellaajaga.

 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

Allpool on toodud ülaltoodud skripti üksikasjalikum rakendamine, mis töötab ülaltoodud põhimõttel ja on väga kasulik Linuxi serveri võrguteabe kogumisel.

Skript võrguteabe kogumiseks

Kogub võrguteavet Linuxi serverisse. Skript on liiga suur ja tervet skripti koodi ja väljundit pole võimalik siia postitada. Seega on parem, kui skripti saate alla laadida alloleva allalaadimislingi abil, ja saate seda ise testida.

Märkus. Võimalik, et peate installima lsb-core paketi ja muud vajalikud paketid ning sõltuvuse. Apt või Yum vajalikud paketid. Ilmselgelt peate skripti käitamiseks olema root kasutaja, sest enamik siin kasutatavaid käske on konfigureeritud töötama root.

 ./collectnetworkinfo.sh  

The Network Configuration Info Written To network.20-07-13.info.txt. Please email this file to [email _provider.com. ktop

Saate oma skriptis ülaltoodud e-posti aadressi muuta, et see teile postitataks. Automaatselt loodud faili saab vaadata.

Skript teisendab suurte kirja väiketähtedeks

Skript, mis teisendab SUURKASU väiketähtedeks ja suunab väljundi tekstifailiks “small.txt”, mida saab vastavalt vajadusele muuta.

#!/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

Selle ülaltoodud skripti abil saab ükskõik millise pikkusega faili juhtumid ühe klõpsuga teisendada suurtähest väiketäheks ja vastupidi, väheste muudatustega.

 ./convertlowercase.sh  
Enter File Name : a.txt 

Initial File: 
A
B
C
D
E
F
G
H
I
J
K
...

Uus faili (small.txt) väljund:

a
b
c
d
e
f
g
h
i
j
k
...

Lihtne kalkulaatorprogramm

#! /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

Nii et kas nägite, kui lihtne oli võimsa programmi loomine, kuna arvutused olid nii lihtsad. See pole lõpp. Koostame veel vähemalt ühe selle sarja artikli, mis hõlmab administratsiooni vaatenurgast laia perspektiivi.

Praeguseks kõik. Olles lugeja ja parim kriitik, ärge unustage meile öelda, kui palju ja mida teile see artikkel meeldis ja mida soovite tulevases artiklis näha. Iga küsimus on kommentaaris väga teretulnud. Kuni siis püsige terve, turvaline ja häälestatud. Meeldib ja jaga meid ning aitab meil levida.