Programmare la shell in UNIX Linux e MacOS – 1

Programmare la shell in UNIX Linux e MacOS :

  • Aspetti sintattici
  • Comandi interni, esterni e composti
  • Variabili

Variabili per memorizzare informazioni numeriche ed alfanumeriche

val=7
echo $val

word='Ciao'
echo $word

phrase="Space Coding"
echo $phrase

Struttura di uno script della shell UNIX

Con un editor scrivere il seguente codice e memorizzarlo come today.sh

#!/bin/bash
#utilizzando il backtic `
data=`date +%d/%m/%Y`
echo "Oggi è il $data"
#oppure con le parentesi tonde
echo "Oggi è il $(date +%d/%m/%Y)."

Per eseguire lo script appena creato, e in generale ogni script, dobbiamo prima renderlo eseguibile con il comando chmod +x today.sh e solo successivamente digitare ./data.sh nella shell per vedere il risultato su standard ouput

output dello script today.sh
output dello script UNIX today.sh

Comandi composti

Scrivere il seguente codice in un file con estensione .sh

#!/bin/bash
# quando si usano più comandi su una linea si separano con il ;
# questi comandi si chiamano composti
a=3; b=4; echo "I valori sono $a e $b"
output dello script UNIX compound-command.sh
output dello script UNIX compound-commands.sh
#!/bin/bash
a=1; b=2
echo "Prima del comando composto: A = $a, B = $b"
(b=3; echo "Durante il comando composto: A = $a, B = $b")
echo "Dopo il comando composto: A = $a, B = $b"
output dello script UNIX compound-commands-2.sh
output dello script UNIX compound-commands-2.sh

Sotto shell

Se le istruzioni che costituiscono il comando composto sono delimitate da parentesi tonde, allora il comando composto viene eseguito in una sotto-shell della shell in cui gira lo script; questo significa che il comando composto eredita tutte le variabili definite nello script, ma lo scope delle assegnazioni e delle definizioni effettuate nell’ambito del comando composto è limitato al comando stesso. Il comando composto viene eseguito in una sotto-shell, ma nello stesso processo della shell con cui viene eseguito lo script.

#!/bin/bash
a=1; b=2
echo "Prima del comando composto: A = $a, B = $b"
(b=3; echo "Durante il comando composto: A = $a, B = $b")
echo "Dopo il comando composto: A = $a, B = $b"
output dello script UNIX sub-shell.sh
output dello script UNIX sub-shell.sh

Operatori booleani

#!/bin/bash
a=1
b=3
(( $a!=0 )) && ( (( $b/$a>=1 )) && echo "Ok" || echo "Ko") || \
echo "Divisione per zero"

assegnare diversi valori alle variabili a e b per visualizzare i diversi risultati.

Nel seguente script analizziamo se due stringhe sono uguali e il loro ordine lessicografico

#!/bin/bash
a='ufficio'
b='casa'
[[ "$a" == "$b" ]] && echo "Sono uguali" || echo "Sono diversi"
[[ "$a" < "$b" ]] && echo "La prima parola viene prima" || echo "La seconda parola viene prima"
output dello script UNIX lex-order-string.sh
output dello script UNIX lex-order-string.sh

Operatori di confronto in UNIX

Nel seguente script vedremo gli operatori di confronto unici di UNIX

#!/bin/bash
a=5
b=2
c=7
d=5
# prestare attenzione agli spazi
if [ $a -eq $d ]
then
  echo "$a è uguale a $d"
fi
if [ $a -ne $b ]
then
  echo "$a non è uguale a $b"
fi
if [ $a -gt $b ]
then
  echo "$a è maggiore di $b"
fi
if [ $a -ge $b ]
then
  echo "$a è maggiore o uguale di $b"
fi
if [ $a -lt $c ]
then
  echo "$a è minore di $c"
fi
if [ $a -le $c ]
then
  echo "$a è minore o uguale di $c"
fi
output dello script UNIX comparison-operators.sh
output dello script UNIX comparison-operators.sh

Nella prossima lezione approfondiremo le strutture di controllo.

Se alcuni termini non ti risultano chiari ti consiglio le precedenti lezioni su UNIX

LINK UTILI

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »