10 Suġġerimenti Utli għall-Kitba ta' Skripts Bash Effettivi fil-Linux


amministrazzjoni tas-sistema għall-awtomatizzazzjoni tal-kompiti, l-iżvilupp ta 'utilitajiet/għodod sempliċi ġodda biex insemmu biss ftit.

F'dan l-artikolu, se naqsmu 10 pariri utli u prattiċi għall-kitba ta' skripts bash effettivi u affidabbli u jinkludu:

1. Dejjem Uża Kummenti fl-Iskripts

Din hija prattika rakkomandata li mhix applikata biss għall-shell scripting iżda t-tipi l-oħra kollha ta 'programmazzjoni. Il-kitba ta' kummenti fi skript jgħinek jew lil xi ħadd ieħor għaddej mill-iskrittura tiegħek tifhem x'jagħmlu l-partijiet differenti tal-iskrittura.

Biex nibdew, il-kummenti huma definiti bl-użu tas-sinjal #.

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

2. Agħmel ħruġ ta 'Script Meta Jfalli

Xi drabi bash jista 'jkompli jesegwixxi script anki meta ċertu kmand ifalli, u b'hekk jaffettwa l-bqija tal-iskript (jista' eventwalment jirriżulta fi żbalji loġiċi). Uża l-linja hawn taħt biex toħroġ minn skript meta kmand ifalli:

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

3. Agħmel ħruġ ta 'Script Meta Bash Użi Varjabbli Mhux Iddikjarat

Bash jista' wkoll jipprova juża skript mhux iddikjarat li jista' jikkawża żball loġiku. Għalhekk uża l-linja li ġejja biex tagħti struzzjonijiet lil bash biex joħroġ minn script meta jipprova juża varjabbli mhux iddikjarat:

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

4. Uża Kwotazzjonijiet Doppju għal Varjabbli ta' Referenza

L-użu ta' kwotazzjonijiet doppji waqt ir-referenza (bl-użu ta' valur ta' varjabbli) jgħin biex jipprevjeni l-qsim tal-kliem (dwar l-ispazju abjad) u l-globbing bla bżonn (ir-rikonoxximent u l-espansjoni ta' wildcards).

Ara l-eżempju hawn taħt:

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

Issejvja l-fajl u oħroġ, imbagħad mexxih kif ġej:

$ ./names.sh

5. Uża funzjonijiet fl-Iskripts

Ħlief għal skripts żgħar ħafna (bi ftit linji ta 'kodiċi), dejjem ftakar li tuża funzjonijiet biex timmodularizza l-kodiċi tiegħek u tagħmel l-iskripts aktar leġibbli u li jistgħu jerġgħu jintużaw.

Is-sintassi għall-funzjonijiet tal-kitba hija kif ġej:

function check_root(){
	command1; 
	command2;
}

OR
check_root(){
	command1; 
	command2;
}

Għal kodiċi ta' linja waħda, uża karattri ta' terminazzjoni wara kull kmand bħal dan:

check_root(){ command1; command2; }

6. Uża = minflok == għal Paraguni String

Innota li == huwa sinonimu għal =, għalhekk uża = waħda biss għal paraguni ta' string, pereżempju:

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

7. Uża $(kmand) minflok ‘kmand’ wirt għas-Sostituzzjoni

Is-sostituzzjoni tal-kmand tissostitwixxi kmand bl-output tiegħu. Uża $ (kmand) minflok backquotes \kmand\ għas-sostituzzjoni tal-kmand.

Dan huwa rakkomandat anke permezz ta 'għodda shellcheck (turi twissijiet u suġġerimenti għal skripts shell). Pereżempju:

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

8. Uża Aqra biss biex Tiddikjara Varjabbli Statiċi

Varjabbli statiku ma jinbidilx; il-valur tiegħu ma jistax jinbidel ladarba jiġi definit fi skript:

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

9. Uża Ismijiet Uppercase għal Varjabbli AMBJENT u Lowercase għal Varjabbli Custom

Il-varjabbli tal-ambjent bash kollha huma msemmijin b'ittri kbar, għalhekk uża ittri żgħar biex issemmi l-varjabbli tad-dwana tiegħek biex tevita kunflitti tal-ismijiet varjabbli:

#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. Dejjem Agħmel Debugging għal Skripts twal

Jekk qed tikteb skripts bash b'eluf ta 'linji ta' kodiċi, is-sejba ta 'żbalji tista' ssir ħmar il-lejl. Biex tiffissa l-affarijiet faċilment qabel ma tesegwixxi skript, wettaq xi debugging. Ikkontrolla din il-ponta billi taqra l-gwidi pprovduti hawn taħt:

  1. Kif Tippermetti l-Modalità ta' Debugging Shell Script fil-Linux
  2. Kif Twettaq il-Modalità ta' Debugging tal-Iċċekkjar tas-Sintassi fi Shell Scripts
  3. Kif Traċċa l-Eżekuzzjoni ta' Kmandi fi Shell Script b'Shell Tracing

Dak kollox! Għandek xi prattiki oħra tal-aħjar bash scripting x'taqsam? Jekk iva, imbagħad uża l-formola tal-kumment hawn taħt biex tagħmel dan.