10 naudingų patarimų, kaip rašyti efektyvius „Bash“ scenarijus sistemoje „Linux“.


Shell scenarijus yra lengviausia programavimo forma, kurią galite išmokti/atlikti „Linux“. Be to, tai yra būtinas sistemos administravimo įgūdis, skirtas automatizuoti užduotis, kurti naujas paprastas programas/įrankius, kad būtų galima paminėti tik keletą.

Šiame straipsnyje mes pasidalinsime 10 naudingų ir praktinių patarimų, kaip rašyti efektyvius ir patikimus bash scenarijus, įskaitant:

1. Visada naudokite komentarus scenarijuose

Tai rekomenduojama praktika, kuri taikoma ne tik apvalkalo scenarijams, bet ir visų kitų tipų programavimui. Komentarų rašymas scenarijuje padeda jums ar kitam scenarijaus naudotojui suprasti, ką daro skirtingos scenarijaus dalys.

Pirmiausia komentarai apibrėžiami naudojant ženklą #.

#TecMint is the best site for all kind of Linux articles

2. Atlikite scenarijaus išėjimą, kai nepavyksta

Kartais bash gali ir toliau vykdyti scenarijų, net kai nepavyksta tam tikros komandos, taip paveikdamas likusį scenarijų (galiausiai gali atsirasti loginių klaidų). Jei komanda nepavyksta, naudokite toliau pateiktą eilutę, kad išeitumėte iš scenarijaus:

#let script exit if a command fails
set -o errexit 
OR
set -e

3. Išeikite iš scenarijaus, kai Bash naudoja nedeklaruotą kintamąjį

Bash taip pat gali bandyti naudoti nedeklaruotą scenarijų, kuris gali sukelti loginę klaidą. Todėl naudokite šią eilutę, kad nurodytumėte bash išeiti iš scenarijaus, kai jis bando naudoti nedeklaruotą kintamąjį:

#let script exit if an unsed variable is used
set -o nounset
OR
set -u

4. Norėdami nurodyti kintamuosius, naudokite dvigubas kabutes

Dvigubų kabučių naudojimas darant nuorodą (naudojant kintamojo reikšmę) padeda išvengti žodžių skaidymo (atsižvelgiant į tarpą) ir bereikalingo blobavimo (pakaitos simbolių atpažinimo ir išplėtimo).

Peržiūrėkite toliau pateiktą pavyzdį:

#!/bin/bash
#let script exit if a command fails
set -o errexit 

#let script exit if an unsed variable is used
set -o nounset

echo "Names without double quotes" 
echo
names="Tecmint FOSSMint Linusay"
for name in $names; do
        echo "$name"
done
echo

echo "Names with double quotes" 
echo
for name in "$names"; do
        echo "$name"
done

exit 0

Išsaugokite failą ir išeikite, tada paleiskite jį taip:

./names.sh

5. Naudokite Skriptų funkcijas

Išskyrus labai mažus scenarijus (su keliomis kodo eilutėmis), visada nepamirškite naudoti funkcijų, kad moduliuotumėte savo kodą ir kad scenarijus būtų lengviau skaitomas ir naudojamas pakartotinai.

Rašymo funkcijų sintaksė yra tokia:

function check_root(){
	command1; 
	command2;
}

OR
check_root(){
	command1; 
	command2;
}

Vienos eilutės kodui po kiekvienos komandos naudokite pabaigos simbolius, pavyzdžiui:

check_root(){ command1; command2; }

6. Naudokite=vietoj == eilučių palyginimams

Atminkite, kad == yra = sinonimas, todėl eilučių palyginimui naudokite tik vieną =, pvz.:

value1=”linux-console.net”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7. Vietoj senosios „komandos“ naudokite $ (komandą), kad pakeistumėte

Komandų pakeitimas pakeičia komandą jos išvestimi. Naudokite $ (komanda), o ne atgalines kabutes `command` komandoms pakeisti.

Tai rekomenduojama net naudojant shellcheck įrankį (rodo įspėjimus ir pasiūlymus dėl apvalkalo scenarijų). Pavyzdžiui:

user=`echo “$UID”`
user=$(echo “$UID”)

8. Norėdami deklaruoti statinius kintamuosius, naudokite tik skaitymo funkciją

Statinis kintamasis nesikeičia; jo vertės negalima pakeisti, kai ji apibrėžiama scenarijuje:

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

9. APLINKOS kintamiesiems naudokite pavadinimus didžiosiomis raidėmis, o tinkintus kintamuosius – mažosiomis raidėmis

Visi bash aplinkos kintamieji yra pavadinti didžiosiomis raidėmis, todėl tinkintus kintamuosius naudokite mažosiomis raidėmis, kad išvengtumėte kintamųjų pavadinimų konfliktų:

#define custom variables using lowercase and use uppercase for env variables
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h  “$1”

10. Visada atlikite ilgų scenarijų derinimą

Jei rašote bash scenarijus su tūkstančiais kodo eilučių, klaidų radimas gali tapti košmaru. Norėdami lengvai ištaisyti dalykus prieš vykdydami scenarijų, atlikite derinimą. Įvaldykite šį patarimą skaitydami toliau pateiktus vadovus:

  1. Kaip įjungti „Shell Script“ derinimo režimą „Linux“.
  2. Kaip atlikti sintaksės tikrinimo derinimo režimą „Shell“ scenarijuose
  3. Kaip atsekti komandų vykdymą „Shell“ scenarijuje naudojant „Shell Tracing“.

Tai viskas! Ar turite kitų geriausių „bash“ scenarijų kūrimo praktikų, kuriomis galėtumėte pasidalinti? Jei taip, naudokite toliau pateiktą komentarų formą, kad tai padarytumėte.