Introducere în Bash Scripting
Alex Scriven
Data Scientist
Similar altor limbaje, variabilele se atribuie cu operatorul egal.
var1="Moon"
Referința se face cu notația $.
echo $var1
Moon
Denumiți variabila după preferință (ceva logic!):
firstname='Cynthia' lastname='Liu'echo "Hi there" $firstname $lastname
Hi there Cynthia Liu
Ambele variabile au fost returnate!
Fără notația $ - nu este o variabilă!
firstname='Cynthia'
lastname='Liu'
echo "Hi there " firstname lastname
Hi there firstname lastname
Bash este strict în privința spațiilor la crearea variabilelor. Atenție la spații!
var1 = "Moon"
echo $var1
script.sh: line 3: var1: command not found
În Bash, ghilimelele diferite au semnificații diferite, atât la crearea variabilelor, cât și la afișare.
'sometext') = shell-ul interpretează conținutul literal"sometext") = shell-ul interpretează literal, cu excepția $ și backtick-urilor Ultima metodă creează un „shell în interiorul altui shell", descris mai jos. Util pentru apelarea programelor din linia de comandă. Se realizează cu backtick-uri.
Să vedem efectul diferitelor metode de creare a variabilelor
now_var='NOW'now_var_singlequote='$now_var' echo $now_var_singlequote
$now_var
now_var_doublequote="$now_var"
echo $now_var_doublequote
NOW
Programul Date este util pentru a demonstra backtick-urile
Ieșirea normală a acestui program:
date
Mon 2 Dec 2019 14:07:10 AEDT
Să utilizăm acum shell-ul în interiorul altui shell:
rightnow_doublequote="The date is `date`."
echo $rightnow_doublequote
The date is Mon 2 Dec 2019 14:13:35 AEDT.
Programul date a fost apelat, ieșirea capturată și inclusă în linia comenzii echo.
Am folosit un shell în interiorul altui shell!
Există un echivalent al notației cu backtick:
rightnow_doublequote="The date is `date`."
rightnow_parentheses="The date is $(date)."
echo $rightnow_doublequote
echo $rightnow_parentheses
The date is Mon 2 Dec 2019 14:54:34 AEDT.
The date is Mon 2 Dec 2019 14:54:34 AEDT.
Ambele funcționează identic, însă backtick-urile sunt mai vechi. Parantezele sunt preferate în aplicațiile moderne. (A se vedea http://mywiki.wooledge.org/BashFAQ/082)
Introducere în Bash Scripting