In questo tutorial, spiegheremo due delle espansioni bash più utili utilizzate negli script di shell:
Un'espansione in shell viene eseguita sullo script dopo che è stata divisa in token. Un token è una sequenza di caratteri considerati una singola unità dalla shell. Può essere una parola o un operatore.
Abbiamo eseguito tutti gli esempi e gli script menzionati in questo articolo su un sistema Debian 10 Buster. Tuttavia, puoi replicarli facilmente sulla maggior parte delle shell Linux. Stiamo usando la riga di comando debian predefinita, il terminale, per questo tutorial. Su Debian, puoi accedervi tramite la barra di ricerca del lancio dell'applicazione come segue:
Per accedere al lancio dell'applicazione, è sufficiente premere il tasto Super/Windows sulla tastiera.
$ () Sostituzione del comando
Secondo il manuale ufficiale di riferimento GNU Bash:
“La sostituzione del comando consente all'output di un comando di sostituire il comando stesso. Bash esegue l'espansione eseguendo il comando e sostituendo la sostituzione del comando con l'output standard del comando, con qualsiasi neofelle finali eliminate. Le nuove linee incorporate non vengono eliminate, ma possono essere rimosse durante la divisione delle parole." La sostituzione del comando si verifica quando un comando è racchiuso come segue:
$ (comando)
O
'comando'
Ad esempio, i seguenti comandi Echo sostituiscono l'output del comando della data come input:
$ echo $ (data)
$ echo 'data'
È inoltre possibile utilizzare la sostituzione del comando per assegnare il valore a una variabile. Ad esempio, stamperemo la data di oggi attraverso la variabile oggi come segue:
$ Oggi = $ (data)
$ echo "$ oggi"
Un'altra utilità della sostituzione del comando è nei loop di shell per ottenere input. Qui, proveremo a stampare tutto .TXT file nella nostra cartella domestica usando la sostituzione del comando:
per f in/home/sana/*.TXT
Fare
echo "$ f"
Fatto
Usando la sostituzione del comando in uno script di shell
Gli esempi di cui sopra sono alcuni modi in cui è possibile utilizzare il potere della sostituzione del comando nella sceneggiatura di shell. Ecco un rapporto sullo stato di esempio che possiamo stampare utilizzando il seguente script di shell:
#!/bin/sh
Echo *** Rapporto sullo stato ***
Oggi = $ (data)
Echo "Oggi è $ oggi"
Utenti = $ (chi | wc -l)
echo "$ utenti utenti sono attualmente effettuati"
Uptime = $ (data; uptime)
echo "L'uptime è $ uptime"
La sostituzione del comando è stata usata tre volte in questa sceneggiatura; nella stampa della data, registrato in utenti e tempo di attività. Abbiamo salvato la sceneggiatura come segue:
Reso eseguibile e quindi eseguito attraverso il seguente comando:
$ chmod +x status.sh
$ ./Staty.sh
Ecco l'output del nostro stato.Script SH:
Ovviamente puoi creare script più significativi seguendo gli esempi che abbiamo appena menzionato.
$ Sostituzione/espansione dei parametri
Un parametro, in bash, è un'entità che viene utilizzata per archiviare i valori. Un parametro può essere referenziato da un numero, un nome o da un simbolo speciale. Quando un parametro viene fatto riferimento da un numero, si chiama a parametro posizionale. Quando un parametro è referenziato da un nome, si chiama a variabile. Quando un parametro è citato da un simbolo speciale, significa che sono parametri automatici con usi speciali.
Espansione/sostituzione dei parametri è il processo di recupero del valore dall'entità/parametro di riferimento. È come se stessi espandendo una variabile per recuperare il suo valore.
La sintassi di espansione dei parametri più semplice possibile è la seguente:
Ecco come è possibile utilizzare l'espansione dei parametri in Bash:
$ parametro
Ad esempio, l'uso più semplice è sostituire il parametro per il suo valore:
$ name = "John Doe"
$ echo "$ name"
Questo comando sostituirà il valore del "nome" variabile per essere utilizzato dal comando Echo:
Potresti pensare che lo stesso possa essere ottenuto evitando le parentesi graffe come segue:
La risposta è che durante l'espansione dei parametri, queste parentesi graffe ricci aiutano a delimitare il nome variabile. Spiegiamo cosa intendiamo limitando qui. Fammi eseguire il seguente comando sul mio sistema:
$ echo "Il nome della persona è $ name_"
Il risultato non ha stampato il valore del nome della variabile poiché il sistema pensava che mi riferivo alla variabile "nome_". Pertanto, il mio nome variabile non era "delimitato". Le parentesi graffe ricci nell'esempio seguente delimiteranno il nome della variabile e restituiranno i risultati come segue:
$ echo "Il nome della persona è $ nome _"
Ecco tutti i modi in cui le variabili vengono sostituite in shell:
$ variabile | Questo comando sostituisce il valore della variabile. |
$ variabile: -word | Se una variabile è nulla o se non è impostata, la parola viene sostituita con la variabile. Il valore della variabile non cambia. |
$ variabile: = word | Se una variabile è nulla o se non è impostata, il valore della variabile è impostato su Word. |
$ variabile:?Messaggio | Se una variabile è null o se non è impostata, il messaggio viene stampato sull'errore di bash standard. |
$ variabile:+word | Se variabile è impostato, parola è sostituito con variabile. Tuttavia, il valore della variabile stessa non cambia. |
Gli esempi di cui sopra sono alcuni modi in cui è possibile utilizzare il potere della sostituzione variabile in bash. Puoi incorporare questi modi per utilizzare l'espansione negli script di shell per ottenere in modo ottimale il tuo compito a portata di mano.