A volte, mentre lavori sulla riga di comando (soprattutto quando hai a che fare con uno script di shell), potresti trovarti in una situazione in cui devi eseguire azioni come cercare una sottostringa in una stringa, trovarne l'indice e altre cose come eseguire confronti e operazioni aritmetiche.
Per coloro che non sono a conoscenza, esiste un'utilità da riga di comando, denominata expr - che ti permette di fare tutto questo. In questo tutorial, discuteremo le basi di questo comando insieme ad alcune delle funzionalità che fornisce. Tieni presente che tutti gli esempi e le istruzioni qui menzionati sono stati testati su Ubuntu 16.04LTS.
Comando Linux expr
La documentazione ufficiale dello strumento afferma che viene utilizzato per valutare le espressioni. Ecco la sintassi del comando expr:
expr EXPRESSION
expr OPTION
Di seguito sono riportati alcuni esempi in stile Domande e risposte che ti daranno una buona idea di come funziona questo strumento.
Q1. Come eseguire operazioni aritmetiche utilizzando expr?
Supponiamo di voler aggiungere due numeri (diciamo, 5 e 6), ecco come puoi farlo usando expr:
expr 5 + 6
Ecco il comando sopra in azione:
Quindi puoi vedere che la somma "11" è stata prodotta nell'output. Si noti che uno spazio singolo su entrambi i lati dell'operatore ('+' in questo caso) è obbligatorio. In caso contrario, il comando expr produrrebbe il seguente output:
che è chiaramente sbagliato, e non quello che ci aspettiamo.
Allo stesso modo, un'operazione di sottrazione può essere eseguita nel modo seguente:
expr 15 - 6
Ecco un esempio di divisione:
expr 10 / 3
Si noti che il comando sopra menzionato produrrà solo 3 in output. Se vuoi vedere il resto, usa l'operatore %.
expr 10 % 3
La moltiplicazione dovrebbe idealmente essere ottenuta nel modo seguente:
expr 10 * 3
Ma questo non funziona, perché * è anche un operatore di shell integrato. Quindi, per farlo comportare come un operatore di moltiplicazione, devi precerlo con un carattere di escape nel modo seguente:
expre 10 \* 3
Q2. Come eseguire operazioni di confronto utilizzando expr?
Il comando expr consente inoltre di eseguire operazioni di confronto in vari modi. Ad esempio, il comando seguente (terzo nello screenshot seguente) restituirà ARG1 se non è né null né 0, altrimenti ARG2.
Tieni presente che la barra rovesciata prima di pipe viene utilizzata come carattere di escape poiché pipe viene altrimenti trattata come un operatore di shell integrato.
Allo stesso modo, puoi eseguire molte operazioni. La seguente schermata - presa dalla pagina man del comando - dovrebbe darti una buona idea sul tipo di confronto che puoi fare con il comando expr.
T3. Come eseguire operazioni relative alle stringhe usando expr?
Il comando expr consente inoltre di eseguire diverse operazioni relative alle stringhe. Ad esempio, per trovare la lunghezza di una stringa, puoi utilizzare lo strumento nel modo seguente:
expr length [string]
Nel caso in cui la stringa contenga spazi, devi usare il carattere di escape.
Andando avanti, puoi anche usare expr per estrarre una sottostringa in una determinata stringa. Ecco la sintassi:
expr substr [stringa] [pos] [lunghezza]
Ad esempio, per recuperare 'forge' da 'howtoforge', puoi utilizzare lo strumento nel modo seguente:
Inoltre, puoi anche usare expr per trovare l'indice iniziale per un insieme di caratteri in una determinata stringa. Ecco la sintassi
expr index [stringa] [caratteri]
Ad esempio, per trovare l'indice di 'wt' in 'howtoforge', usa expr nel modo seguente:
Conclusione
Come probabilmente sarai d'accordo, expr è un comando ricco di funzionalità, ma allo stesso tempo facile da capire e semplice da usare. Qui, in questo tutorial, abbiamo cercato di fornirti informazioni sulla maggior parte delle funzionalità di base che offre. Una volta che hai finito di esercitarti, puoi andare alla pagina man dello strumento per saperne di più.