expr - expr

expr
Autori originali Dick Haight
( AT&T Bell Laboratories )
Sviluppatore / i Varie open-source e commerciali sviluppatori
Versione iniziale 1979 ; 42 anni fa  ( 1979 )
Sistema operativo Unix , simile a Unix , IBM i
piattaforma Cross-platform
genere Comando

expr è una linea di comando utilità su Unix e Unix-like sistemi operativi che valuta un'espressione ed emette il valore corrispondente. È apparso per la prima volta in Unix v7 . Anche il comando expr è stato portato sul sistema operativo IBM i .

Panoramica

expr valuta espressioni di tipo intero o stringa , comprese le espressioni regolari di corrispondenza dei modelli . Ciascun simbolo (operatore, valore, ecc.) Nell'espressione deve essere fornito come parametro separato. La maggior parte della sfida posta nella scrittura di espressioni è impedire che la shell della riga di comando invocata agisca sui caratteri destinati all'elaborazione di expr .

Sintassi

Sintassi: espressione expr

Gli operatori disponibili

  • per interi: addizione, sottrazione, moltiplicazione, divisione e modulo
  • per le stringhe: corrisponde a un'espressione regolare; in alcune versioni: trova un insieme di caratteri in una stringa ("index"), trova sottostringa ("substr"), lunghezza della stringa ("length")
  • per entrambi: confronto (uguale, non uguale, minore di, ecc.)

Esempio

Il seguente è un esempio (non conforme a POSIX ) che coinvolge espressioni booleane :

expr length  "abcdef"  "<"  5  "|"  15  -  4  ">"  8

Questo esempio restituisce "1". Questo perché la lunghezza "abcdef" è 6, che non è inferiore a 5 (quindi il lato sinistro di | restituisce zero). Ma 15 meno 4 fa 11 ed è maggiore di 8, quindi il lato destro è vero, il che rende o vero, quindi 1 è il risultato. Lo stato di uscita del programma è zero per questo esempio.

Per pura aritmetica, è spesso più conveniente usare bc . Per esempio:

echo "3 * 4 + 14 / 2" | bc

poiché accetta l'espressione come un singolo argomento.

Per la programmazione della shell portatile , deve essere evitato l'uso dei comandi "index", "length", "match" e "substr"; la corrispondenza delle stringhe rimane possibile ma deve utilizzare la sintassi "string: regexp".

Guarda anche

Riferimenti

link esterno