Quiz: Padronanza di Bash e Shell
Riesci a parlare con i computer? Tipo, bene?
Metti alla prova le tue competenze di scripting Bash con queste 16 domande!
Copre variabili, cicli, condizioni, manipolazione di stringhe, funzioni e le insidie della sintassi, dalle più semplici alle più subdole.
Affina (o dimostra) le tue competenze di scripting shell!
Come si definiscono le variabili in Bash?
Le variabili in Bash si dichiarano senza spazi intorno al segno =. Per esempio:
name=AliceQuesto assegna il valore "Alice" alla variabile name.
Nota: $name è usato per riferire o leggere il valore di una variabile.
Aggiungere spazi fa sì che la shell interpreti il comando come un programma da eseguire, il che non è quello che vuoi quando imposti una variabile.
Inoltre, Bash è sensibile al maiuscolo/minuscolo, quindi name, NAME e Name sono variabili diverse.
Infine, le variabili non possono contenere spazi o trattini (-) nei loro nomi. Usa underscore (_) o camelCase invece.
Cosa stamperà It's 🔨 Time!?
Lo so. È pazzesco quanto rapidamente l’escaping renda le stringhe difficili da analizzare. Immagina di fare l’escaping di altri linguaggi nelle stringhe Bash – con tutte quelle virgolette, apostrofi e simboli $ pronti a farti impazzire. 🫠
Una virgoletta singola non può essere preceduta da escape all’interno di una stringa delimitata da virgolette singole. Bisogna chiudere la stringa, inserire la virgoletta con escape fuori dalla stringa e riaprirla. La sequenza chiudi-virgoletta, escape-virgoletta, riapri-virgoletta ('\'') permette di stampare:
It's 🔨 Time!Ci sono altri modi per gestirlo, ma questo è il più comune.
Ora, cosa stamperà?
price="$100"echo "Cost: $price"Le variabili numerate hanno un significato speciale. In questo caso, $1 è una variabile speciale che contiene il primo argomento passato allo script o alla funzione.
Poiché stiamo eseguendo lo script in una REPL, non ci sono argomenti, quindi $1 è vuota. Il testo rimanente 00 viene stampato così com’è.
Per stampare un carattere $ letterale, usa gli apici singoli o escapalalo con una barra rovesciata (\):
price="\$100"echo "Cost: $price"Come puoi ottenere la lunghezza di una variabile in Bash?
La sintassi ${#username} restituisce la lunghezza di username.
Per esempio:
username="@justsml"echo ${#username} # => 8Mentre wc funzionerebbe, tecnicamente non fa parte di Bash.
L’utilità wc è una vecchia battuta interna che si riferisce a “water closet”, ovvero il bagno.
SCHERZO! Qualcuno legge queste cose?
In realtà wc è un comando antico di POSIX (e dei giorni AT&T Unix). È l’abbreviazione di “word count” e può contare linee, parole e caratteri in un file o flusso di input.
Cosa stamperà questo script?
function greet () { echo "$1"}greet Hi DanLe funzioni in Bash possono accettare argomenti. La variabile $1 contiene il primo argomento passato alla funzione.
Ricorda, $0 è il nome dello script, $1 è il primo argomento, $2 è il secondo, e così via. Gli spazi separano gli argomenti. Quindi, greet Hi Dan passa "Hi" come primo argomento. Per passare "Hi Dan" come unico argomento, devi racchiuderlo tra virgolette: greet "Hi Dan".
Come funziona la matematica in Bash?
La sintassi (( )) esegue operazioni aritmetiche intere in Bash.
Può essere usata per calcoli semplici:
((result = 2 + 2))echo $result # => 4Oppure per espressioni condizionali:
if (( 2 > 1 )); then echo "2 is greater than 1"fiPer l’aritmetica a virgola mobile, considera l’uso di bc o awk.
Quale di questi moltiplica correttamente 10 e 0.5, stampando 5?
Cosa fa il : in questo script?
rosie="Bad cat, good cat"echo ${rosie:9}La sintassi ${var:offset} estrae una sottostringa a partire da offset. Qui, l’output è:
good catPer estrarre una sottostringa di lunghezza specifica, usa ${var:offset:length}.
Per estrarre dalla fine della stringa, usa ${var: -offset}. (Nota lo spazio prima del -!)
Il mio Quiz su Bash ti ha lasciato a pezzi?
Fammi sapere nei commenti qui sotto!
Ulteriori letture
Rafforza le tue competenze Bash con le seguenti risorse:
- Guida Bash
- BashFAQ
- ShellCheck
- Accademia Bash
- Tutorial di scripting Bash
- Manuale di riferimento Bash
- Wiki dei Bash Hacker
- Guida Bash per principianti
- Scheda di riferimento Bash
