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

uso de la IA en BTOB

Impacto de la IA en un negocio (real y cuantificado): el caso de BTOB

Las principales noticias sobre la inteligencia artificial giran en torno a las numerosas aplicaciones que han salido al mercado para una amplia variedad de sectores. Sin embargo, pocas hablan del verdadero impacto de la IA en un negocio. El ejemplo de BTOB puede aclarar muchas dudas sobre la influencia que tiene la nueva tecnología en

Suite VIsual de Canva

Suite Visual 2.0 de Canva: el mayor lanzamiento en la historia de la plataforma

Canva ha dejado de ser solo una plataforma de diseño gráfico accesible. En su última edición del evento Canva Create, celebrado en Los Ángeles, la compañía australiana ha anunciado el lanzamiento de su mayor revolución tecnológica hasta la fecha: la Suite Visual 2.0 de Canva, un paquete de herramientas que promete transformar la manera en

IA de WordPress

Con la IA de WordPress nunca fue tan sencillo crear una página web

WordPress, quizás la plataforma más popular para crear webs de forma profesional, acaba de dar un paso muy importante: la IA de WordPress ha sido presentada con el objetivo de generar páginas de una forma muy sencilla. Si ya era fácil construir una página web en este ecosistema, ahora lo será mucho más. Todo se

Kings League Clash of Captains

La fructífera relación entre la Kings League Spain y el mundo del gaming

Lo que comenzó como una liga de fútbol 7 reinventada por streamers y exfutbolistas, se ha convertido en un fenómeno de entretenimiento que trasciende el césped. La Kings League Spain, conocida por romper moldes y conectar con las nuevas generaciones a través del deporte y el contenido digital, ha estrechado lazos muy fuertes con el