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

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


Índice de contenidos

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 )

TAMBIÉN TE INTERESA

Instagram-Creator-Marketplace

España, a la espera del Instagram Creator Marketplace

Instagram es una de las redes sociales de mayor impacto en la población española. Desde su irrupción, la figura del influencer ha crecido enormemente en el mundo del marketing y las marcas. La herramienta Instagram Creator Marketplace puede seguir fortaleciendo a estos prescriptores, visto el potencial que empieza a tener este servicio en Estados Unidos.

avatares-Roblox

Vámonos de shopping en Roblox: Mango inaugura su primera tienda

En dinámico mundo de los juegos online, Roblox (con más de 70 millones de usuarios activos diarios) se ha destacado como una plataforma que ofrece a los participantes una experiencia única y diversa. Una de las características más populares de Roblox es su sistema de personalización de avatares, que permite a los jugadores expresar su

Snapdragon-8-Gen-3

Snapdragon 8 Gen 3, el chip de Qualcomm que empujará la IA en los móviles

La IA ha llegado al universo de los smartphones. Los últimos lanzamientos ya se anuncian con la inteligencia como protagonista. De igual manera, las grandes actualizaciones de software vienen marcada por la presencia de nuevas funciones movidas bajo los parámetros de la inteligencia artificial generativa. Al margen de los desarrollos a nivel de software, es

Ecowatch-1-de-Maxcom

Con el Ecowatch 1 no tendrás excusas para pasarte a un reloj inteligente

Sabemos que es muy difícil convencer a un perfil de personas que reniegan de un smartwatch a comprarse un reloj inteligente y quitarse el de toda la vida. No obstante, vamos a intentarlo con el Ecowatch 1 de Maxcom.  Es tarea complicada porque el gusto por los relojes suele estar muy definido en ciertas personas.

simulador-de-bodas

¿Te casas? La IA y DeWeed pueden ayudarte en la planificación de tu boda

La planificación de una boda es un proceso emocionante pero a menudo abrumador. Desde la selección del lugar perfecto hasta la elección del vestido ideal, hay innumerables decisiones que tomar para que todo salga según lo planeado en el gran día. Tradicionalmente, esta tarea ha supuesto muchos quebraderos de cabeza para los novios. Una vez