Come valutare le espressioni in Linux con expr
Esprimi i tuoi calcoli nel terminale con expr.
Punti chiave
- Il comando expr può valutare le espressioni e restituire il valore corrispondente. Puoi usarlo per eseguire calcoli aritmetici, confronti e operazioni sulle stringhe.
- Utilizzando il comando expr, puoi cercare modelli specifici nel testo, convalidare l'input dell'utente e persino sostituire il testo in base a modelli definiti.
- Il comando expr può anche manipolare le stringhe utilizzando funzioni di stringa come trovare la lunghezza, confrontare stringhe ed estrarre sottostringhe.
Vuoi fare alcuni semplici calcoli in Linux? Basta usare il comando expr. Questo comando può eseguire varie operazioni, come la valutazione di espressioni, l'estrazione di sottostringhe, il confronto di stringhe e altro. Usando expr, puoi aggiungere, sottrarre, moltiplicare o dividere due numeri e ottenere la risposta come output.
Il comando expr
expr è uno strumento in grado di eseguire calcoli e manipolare stringhe in base alle espressioni fornite. Con il comando expr puoi eseguire varie operazioni su numeri interi e stringhe, come confrontare valori o trovare modelli specifici utilizzando le espressioni regolari.
Puoi passare più espressioni a expr come argomenti, separate da spazi. Non solo valuta un'espressione ma mostra anche l'output corrispondente sul terminale. Il comando expr funziona sia nel terminale Bash che negli script di shell.
Il comando expr è utile quando si manipolano dati o si eseguono calcoli senza uscire dal terminale. Tuttavia, è necessario fare attenzione alla sintassi e all'ordine delle espressioni, altrimenti il comando fallirà e visualizzerà un messaggio di errore.
La sintassi del comando expr è:
expr expression
... dove l'espressione può essere una combinazione di argomenti e operatori. Ad esempio, l'espressione indicata di seguito valuta l'operazione tra arg1 e arg2 e visualizza il risultato:
expr arg1 operator arg2
Gli argomenti possono essere numeri o stringhe, a seconda dell'operatore. Gli operatori possono essere aritmetici, relazionali, relativi alle stringhe o logici. È il simbolo che specifica l'operazione da eseguire. Ad esempio, per i numeri interi, puoi utilizzare operatori come +, -, *,/e %.
Per le stringhe, puoi utilizzare espressioni regolari e set di caratteri per trovare corrispondenze e indici. Puoi anche utilizzare le parentesi per raggruppare le espressioni e le barre rovesciate per eseguire l'escape dei caratteri speciali.
Opzioni del comando expr
Sebbene expr non disponga delle tradizionali opzioni della riga di comando, offre operatori versatili per l'aritmetica, la manipolazione delle stringhe e il confronto. Inoltre, puoi utilizzare l'opzione --help per mostrare la pagina di aiuto di expr, che ne spiega la sintassi, le funzionalità e gli esempi:
expr --help
Per verificare la versione del comando expr, esegui:
expr --version
Questa opzione visualizza il numero di versione, il codice sorgente, la licenza e l'autore di expr.
Esecuzione di operazioni aritmetiche con expr
Per utilizzare il comando expr per operazioni aritmetiche di base, scrivere il comando expr seguito da uno spazio. Quindi, scrivi l'espressione che vuoi valutare. Questa espressione è una combinazione di numeri interi e operatori come +, -, * e /. Assicurati di separare ciascun token (intero o operatore) nell'espressione con uno spazio.
Ad esempio, se vuoi calcolare la somma di 15 e 12 usando expr, puoi scrivere:
expr 15 + 12
Allo stesso modo, puoi utilizzare il comando expr per eseguire altre operazioni aritmetiche, come sottrazione, moltiplicazione e divisione. Valutiamo alcune espressioni utilizzando il comando expr:
expr 15 - 12
expr 15 \* 5
expr 10 / 2
È necessario evitare l'operatore di moltiplicazione (*) con una barra rovesciata (\) per evitare l'espansione della shell. Altrimenti, la shell proverà a far corrispondere l'operatore (*) con i nomi dei file nella directory corrente e li passerà al comando expr, che causerà un errore.
Puoi anche impedire alla shell di interpretare i caratteri citando correttamente gli argomenti e gli operatori:
expr "5" "*" "3"
Confronto di due espressioni con expr
Per confrontare due espressioni utilizzando il comando expr, è possibile utilizzare operatori logici come =, <, > e !=. Se vedi l'output del comando uno, la condizione è vera, altrimenti è falsa e il valore restituito è zero.
Ad esempio, per verificare se il primo argomento è uguale al secondo argomento, utilizziamo l'operatore =:
expr 40 = 50
Ora controlliamo se il primo argomento è più piccolo dell'altro argomento. Per questo usiamo l'operatore <:
expr 40 \< 50
Puoi anche verificare se i valori non sono uguali. Per fare ciò, usa semplicemente l'operatore != tra i valori dei due argomenti:
expr 45 \!= 55
Qui, l'uscita 1 indica che 45 non è uguale a 55.
In questo modo, il comando expr fornisce un metodo semplice ed efficace per confrontare valori numerici.
Come l'operatore di moltiplicazione (*), anche gli operatori <, > e != devono essere preceduti da una barra rovesciata (\). Altrimenti potrebbero essere interpretati dalla shell come caratteri speciali.
Trovare la lunghezza di una stringa con expr
Per trovare la lunghezza di una stringa utilizzando il comando expr, puoi utilizzare il metodo length. Questo operatore restituirà in output il numero di caratteri presenti nella stringa data.
Ad esempio, per trovare la lunghezza della stringa "How To Geek", esegui questo comando:
expr length 'How To Geek'
L'output è 11 perché nella stringa sono presenti nove caratteri e due spazi bianchi. Se vuoi trovare la lunghezza di una stringa senza spazi bianchi, puoi usare altri comandi come tr o awk per rimuoverli prima. Per esempio:
expr length "$(echo 'How To Geek' | tr -d ' ')"
L'output sarà nove perché il comando tr cancella tutti gli spazi nella stringa prima di passarla al comando expr length.
Corrispondenza di due stringhe con expr
Una delle operazioni offerte da expr è il confronto di due stringhe. Per questo, utilizzare l'operatore due punti (:) con il comando expr. Questo operatore restituisce il numero di caratteri che corrispondono all'inizio di entrambe le stringhe.
La sintassi per utilizzare questo operatore è:
expr string1 : string2
Questo confronta le due stringhe e restituisce il numero di caratteri corrispondenti dall'inizio della stringa.
Ad esempio, il comando seguente restituirà cinque, poiché entrambe le stringhe hanno i primi cinque caratteri in comune:
expr 'HowToGeek' : 'HowTo'
Consideriamo un altro esempio, in cui due stringhe indicate sono identiche:
expr 'How To Geek' : 'How To Geek'
L'output è 11 poiché entrambe le stringhe hanno tutti i caratteri in comune, compresi gli spazi bianchi.
Se non è presente alcun carattere corrispondente, l'output sarà zero:
expr 'How To Geek' : 'Linux'
Incremento e decremento di una variabile con expr
Il comando expr può anche valutare un'espressione che incrementa e decrementa il valore di una variabile. Inoltre, è possibile assegnare il risultato a una nuova variabile.
Consideriamo l'esempio seguente, in cui abbiamo definito una variabile "a" e incrementato il suo valore utilizzando il comando expr:
a=20
a=`expr $a + 1`
echo $a
Allo stesso modo, per diminuire il valore della variabile, utilizzare la stessa sintassi ma sostituire il segno di addizione con quello di sottrazione:
a=20
a=`expr $a - 1`
echo $a
Estrazione di una sottostringa utilizzando expr
Per estrarre una sottostringa da una determinata stringa, puoi utilizzare il comando expr con un operatore substr. In questo modo puoi estrarre informazioni specifiche da un testo più grande, come nome, data o qualsiasi codice. È inoltre possibile utilizzare questo operatore per rimuovere caratteri o spazi indesiderati da una stringa.
Considera i seguenti comandi di esempio, in cui viene inizializzata una nuova stringa. Successivamente, utilizzando il comando expr, otterremo dal secondo al quinto carattere della stringa "HowToGeek":
a=HowToGeek
b=`expr substr $a 2 5`
echo $b
Esecuzione di operazioni expr utilizzando uno script di shell
Per automatizzare la gestione delle espressioni utilizzando il comando expr, puoi creare uno script di shell personalizzato. Gli script di shell sono strumenti multiuso che possono aiutarti a fare di più con meno. Con gli script di shell puoi automatizzare attività ripetitive, manipolare dati ed eseguire calcoli complessi.
Ad esempio, puoi creare uno script per aggiungere due numeri utilizzando il comando expr. Innanzitutto, devi creare un file con estensione ".sh", come "my_script.sh". Questo dice alla shell che si tratta di un file di script. Successivamente, è necessario scrivere un codice che possa prendere due numeri come input e restituire la loro somma. Ecco uno script di esempio che può farlo:
echo "Enter two numbers"
read a
read b
sum=`expr $a + $b`
echo "Sum of two numbers is= $sum"
Questo script utilizza il comando expr per valutare le operazioni aritmetiche sulle variabili "a" e "b". Il comando echo stampa un messaggio sullo standard output, mentre il comando read legge una riga dallo standard input e la inserisce in una variabile.
Successivamente, per rendere eseguibile questo script, esegui il comando chmod:
chmod +x my_script.sh
Ora procediamo con l'esecuzione dello script eseguendo:
./my_script.sh
Ti verrà richiesto di inserire due numeri. Dopo aver inserito i numeri, vedrai che lo script mostrerà la somma di entrambi i numeri sullo schermo. Puoi anche modificare lo script per eseguire altre operazioni o attività secondo le tue esigenze.
Prova alcuni comandi Linux alternativi
Questo articolo si concentra principalmente sul comando expr, ma puoi anche provare alcuni altri comandi per varie operazioni. Questi comandi includono dichiarazione, let e bc. Tutti questi strumenti da riga di comando possono eseguire operazioni matematiche da semplici a complesse su valori definiti.
Il comando di dichiarazione può creare e modificare variabili e i loro attributi. Allo stesso modo, il comando let valuta le espressioni aritmetiche sulle variabili della shell. Infine, bc è una calcolatrice da riga di comando che supporta l'aritmetica di precisione arbitraria e varie funzioni matematiche. Può anche analizzare un linguaggio di scripting che supporta loop, istruzioni condizionali e variabili.