expr es una utilidad de línea de comandos en sistemas operativos Unix y similares a Unix que evalúa una expresión y genera el valor correspondiente. Apareció por primera vez en Unix v7 . El comando está disponible para Microsoft Windows como parte de la colección UnxUtils [1] de puertos Win32 nativos de utilidades comunes de GNU similares a Unix. [2] El comando expr también ha sido portado al sistema operativo IBM i . [3]
Descripción general
expr evalúa expresiones de números enteros o cadenas , incluidas expresiones regulares de coincidencia de patrones . Cada símbolo (operador, valor, etc.) de la expresión debe proporcionarse como un parámetro independiente. La mayor parte del desafío que se plantea al escribir expresiones es evitar que el shell de línea de comandos que las invoca actúe sobre caracteres que expr debe procesar.
Sintaxis
Sintaxis: expr expresión
Los operadores disponibles
- Para números enteros: suma, resta, multiplicación, división y módulo.
- para cadenas: coincide con una expresión regular; en algunas versiones: busca un conjunto de caracteres en una cadena ("índice"), busca una subcadena ("substr"), la longitud de la cadena ("length")
- para cualquiera de los dos: comparación (igual, no igual, menor que, etc.)
Ejemplo
El siguiente es un ejemplo (no compatible con POSIX ) que involucra expresiones booleanas :
expr longitud "abcdef" "<" 5 "|" 15 - 4 ">" 8
Este ejemplo genera como resultado "1". Esto se debe a que la longitud de "abcdef" es 6, que no es menor que 5 (por lo que el lado izquierdo de | devuelve cero). Pero 15 menos 4 es 11 y es mayor que 8, por lo que el lado derecho es verdadero, lo que hace que o sea verdadero, por lo que el resultado es 1. El estado de salida del programa es cero para este ejemplo.
Para aritmética pura, suele ser más conveniente utilizar bc . Por ejemplo:
eco "3 * 4 + 14 / 2" | bc
ya que acepta la expresión como un único argumento.
Para la programación de shell portátil , se debe evitar el uso de los comandos "index", "length", "match" y "substr"; la coincidencia de cadenas sigue siendo posible, pero debe utilizar la sintaxis "string : regexp".
Véase también
Referencias
Enlaces externos
- : evaluar argumentos como una expresión – Referencia de Shell y utilidades, La especificación única de UNIX , versión 4 de The Open Group
- Invocación de expr en el manual de GNU CoreUtils