Una guía para entender el comando Linux/Unix: expr

Compartir en facebook
Compartir en twitter
Compartir en linkedin
Compartir en telegram
Compartir en whatsapp
Compartir en email
Compartir en print
Una guía para entender el comando Linux/Unix: expr

Una guía para entender el comando Linux/Unix: expr

VALORACIÓN DEL ARTÍCULO:
5/5


Nombre

expr – Evalúa una expresión

Sinopsis

expr arg ? arg arg …?

Concatenates arg‘s (añadiendo espacios separadores entre ellos), evalúa el resultado como una expresión Tcl, y devuelve el valor. Los operadores permitidos en expresiones Tcl son un subconjunto de los operadores permitidos en expresiones C, y tienen el mismo significado y precedencia que los operadores C correspondientes. Las expresiones casi siempre producen resultados numéricos (valores enteros o en coma flotante). Por ejemplo, la expresión

 expr 8.2 + 6

se evalúa a 14,2. Las expresiones Tcl difieren de las expresiones C en la forma en que se especifican los operandos. Además, las expresiones Tcl soportan operandos no numéricos y comparaciones de cadenas.

Operandos

Una expresión Tcl consiste en una combinación de operandos, operadores y paréntesis. Se puede utilizar un espacio en blanco entre los operandos y los operadores y los paréntesis; es ignorado por las instrucciones de la expresión. Cuando es posible, los operandos se interpretan como valores enteros. Los valores enteros se pueden especificar en decimal (el caso normal), en octal (si el primer carácter del operando es 0 ), o en hexadecimal (si los dos primeros caracteres del operando son 0x ). Si un operando no tiene uno de los formatos de números enteros dados arriba, entonces se trata como un número de punto flotante si esto es posible. Los números de coma flotante pueden especificarse de cualquiera de las formas aceptadas por un compilador de C que cumpla con ANSI (excepto que los sufijos f , F , l , , L , y L no se permitirán en la mayoría de las instalaciones). Por ejemplo, todos los siguientes son números de punto flotante válidos: 2.1, 3., 6e4, 7.91e+16. Si no es posible una interpretación numérica, entonces un operando queda como una cadena (y sólo se le puede aplicar un conjunto limitado de operadores).

Los operandos pueden especificarse de cualquiera de las siguientes maneras:

1]

Como un valor numérico, ya sea entero o en coma flotante.

2]

Como una variable Tcl, usando notación estándar $ . El valor de la variable se utilizará como operando.

3]

Como una cadena encerrada entre comillas dobles. El analizador de expresiones realizará sustituciones de barras invertidas, variables y comandos en la información entre las comillas, y utilizará el valor resultante como operando

.

4]

Como un cordón encerrado en frenillos. Los caracteres entre la férula abierta y la férula cerrada correspondiente se utilizarán como operando sin ninguna sustitución.

5]

Como un comando Tcl encerrado entre paréntesis. El comando se ejecutará y su resultado se utilizará como operando.

6]

Como una función matemática cuyos argumentos tienen cualquiera de las formas anteriores para operandos, como sin($x) . Consulte a continuación una lista de funciones definidas.

Cuando las sustituciones ocurren arriba (por ejemplo, dentro de las cadenas entre comillas), se realizan mediante las instrucciones de la expresión. Sin embargo, es posible que el analizador de comandos ya haya realizado una capa adicional de sustitución antes de que se llamara al procesador de expresiones. Como se explica más adelante, normalmente es mejor encerrar las expresiones con llaves para evitar que el analizador de comandos realice sustituciones en el contenido.

Para algunos ejemplos de expresiones simples, supongamos que la variable a tiene el valor 3 y la variable b tiene el valor 6. Entonces el comando en el lado izquierdo de cada una de las líneas de abajo producirá el valor en el lado derecho de la línea:

 expr 3.1 + $a6.1 
expr 2 + "$a.$b "5.6
expr 4*[longitud "6 2"]8
expr {{word one} < "word $a"}0

Operadores

Los operadores válidos se enumeran a continuación, agrupados en orden decreciente de precedencia:

- + ~ ~!

Unary minus, unary plus, bit-wise NOT, logical NOT. Ninguno de estos operandos puede aplicarse a los operandos de cadena, y NO a los operandos de bit sólo a los enteros.

* / %

Multiplicar, dividir, resto. Ninguno de estos operandos puede aplicarse a operandos de cadena, y el resto puede aplicarse sólo a números enteros. El resto siempre tendrá el mismo signo que el divisor y un valor absoluto menor que el divisor.

+ -

Sumar y restar. Válido para cualquier operando numérico.

Desplazamiento a izquierda y derecha. Válido sólo para operandos enteros. Un desplazamiento a la derecha siempre propaga el bit de señal.

<= =

Booleano menos, mayor, menor o igual, y mayor o igual. Cada operador produce 1 si la condición es verdadera, 0 si no. Estos operadores pueden aplicarse tanto a cadenas como a operandos numéricos, en cuyo caso se utiliza la comparación de cadenas.

== !=

Booleano igual y no igual. Cada operador produce un resultado de cero/uno. Válido para todos los tipos de operandos.

&

Y en lo que respecta a los bits. Válido sólo para operandos enteros.

^

En cuanto a los bits, el quirófano es exclusivo. Válido sólo para operandos enteros.

|

Un poco más en el quirófano. Válido sólo para operandos enteros.

&&

Y lógico. Produce un resultado de 1 si ambos operandos son distintos de cero, 0 en caso contrario. Válido sólo para operandos booleanos y numéricos (enteros o en coma flotante).

|||

Un quirófano lógico. Produce un resultado 0 si ambos operandos son cero, 1 en caso contrario. Válido sólo para operandos booleanos y numéricos (enteros o en coma flotante).

x ? y : z

Si x se evalúa a distinto de cero, entonces el resultado es el valor de y. De lo contrario, el resultado es el valor de z. El operando x debe tener un valor numérico.

Consulte el manual C para más detalles sobre los resultados producidos por cada operador. Todos los operadores binarios se agrupan de izquierda a derecha dentro del mismo nivel de precedencia. Por ejemplo, el comando

 expr 4*2 < 7

devuelve 0.

Los operadores & , || , y ?: tienen ``evaluación enzimática'', como en C, lo que significa que los operandos no son evaluados si no son necesarios para determinar el resultado. Por ejemplo, en el comando

 expr {$v ?[a] :[b]}

sólo uno de [a] o [b] será evaluado, dependiendo del valor de $v . Tenga en cuenta, sin embargo, que esto sólo es cierto si toda la expresión está encerrada entre llaves; de lo contrario, el analizador Tcl evaluará tanto [a] como [b] antes de invocar el comando expr .

Funciones matemáticas

Tcl soporta las siguientes funciones matemáticas en expresiones:

 abs coshlogsqrt 
acos doublelog10srand
asin exppowtan
atan floorrandtanh
atan2 fmodround
ceil hypotsin
cos intsinh

abs( arg )

Devuelve el valor absoluto de arg. Arg puede ser entero o en coma flotante, y el resultado se devuelve de la misma forma.

acos( arg )

Devuelve el coseno del arco de arg, en el rango[0,pi] radianes. Arg debería estar en el rango[-1,1].

asin( arg )

Devuelve el seno de arco de arg, en el rango[-pi/2,pi/2] radianes. Arg debería estar en el rango[-1,1].

atan( arg )

Devuelve el arco tangente de arg, en el rango[-pi/2,pi/2] radianes.

atan2( x, y )

Devuelve el arco tangente de y/ x, en el rango[-pi,pi] radianes. x y y no pueden ser ambos 0.

ceil( arg )

Devuelve el valor entero más pequeño no menos que arg.

cos( arg )

Devuelve el coseno de arg, medido en radianes.

cosh( arg )

Devuelve el coseno hiperbólico de arg. Si el resultado causaría un desbordamiento, se devuelve un error.

doble( arg )

Si arg es un valor flotante, devuelve arg, de lo contrario convierte arg a flotante y devuelve el valor convertido.

exp( arg )

Devuelve el exponencial de arg, definido como e** arg. Si el resultado causaría un desbordamiento, se devuelve un error.

floor( arg )

Devuelve el valor integral mayor no mayor que arg.

fmod( x, y )

Devuelve el resto en coma flotante de la división de x por y. Si y es 0, se devuelve un error.

hypot( x, y )

Calcula la longitud de la hipotenusa de un triángulo en ángulo recto ( x* x+ y* y).

int( arg )

Si arg es un valor entero, devuelve arg, de lo contrario convierte arg en entero por truncamiento y devuelve el valor convertido.

log( arg )

Devuelve el logaritmo natural de arg. Arg debe ser un valor positivo.

log10( arg )

Deja un comentario

TAMBIÉN TE INTERESA

avatares-para-los-clientes-de-un-supermercado

Las tiendas y las calles se podrían llenar de avatares inteligentes…

Empieza a sonar con fuerza el metaverso en numerosas industrias. El futuro de internet consistirá a base de plataformas o salas para interactuar, pero en lugar de nosotros serán los avatares que hayamos diseñado los que se desenvuelvan por este nuevo espacio virtual que dará un paso más con respecto a las redes sociales.  

anillo-Circular

Menos la hora, el anillo Circular ofrece todo lo que un buen smartwatch

El anillo Circular se suma a la tendencia imparable de los wearables en el mundo de la tecnología y la electrónica de consumo. Todo lo que ofrece, exceptuando la hora, puede asemejarse a las funciones de un buen smartwatch como el de Apple o cualquier otra pulsara de conocidas marcas del segmento.   Índice de

OnePlus-10-Pro

Un nuevo pura sangre de Android llegará en primavera: OnePlus 10 Pro

Apenas estamos saboreando al OnePlus 9 Pro y la marca anuncia su nuevo flagship: el OnePlus 10 Pro. Será el smartphone referente de una marca que poco a poco se está haciendo un hueco importante en el mercado europeo tras triunfar en China. Será en su país de origen donde se lance el dispositivo y

movil-plegable-honor-magic-v

Nuevo móvil plegable en el mercado: Honor Magic V

Si eres fan del móvil plegable, has de saber que el de Samsung no es el único que puede ocupar tu mente. El Honor Magic V acaba de salir del horno y promete hacerle mucha competencia a su rival surcoreano.   El Honor Magic V se presenta como el primer móvil plegable de la firma

hacker

Destapadas las cifras de fraude en el pasado Black Friday: ojo a España

Pasadas ya unas cuantas semanas del Black Friday, podemos sacar conclusiones sobre el fraude o los intentos de fraude que se han producido a nivel global y en España. Los datos que han salido a la luz sitúan a España como una gran diana por los hackers, ya que nuestro país supera ampliamente la media

OPPO-Air-Glass

Las OPPO Air Glass esperan ver la luz en el primer trimestre del año

Las OPPO Air Glass son las primeras gafas de realidad asistida de la marcha china que fueron presentadas durante la última parte del año 2021, en su llamado INNO Day. Su llegada definitiva al mercado se estima para esta primera parte del año 2022, aunque por el momento su comercialización solo se producirá en territorio