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:
- Kaip įjungti „Shell Script“ derinimo režimą „Linux“.
- Kaip atlikti sintaksės tikrinimo derinimo režimą „Shell“ scenarijuose
- 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.