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

errores SEO más comunes

Los 10 errores SEO que más se están cometiendo en la actualidad

Respetando a todos los buscadores del momento y a la trascendencia que tienen hoy otras fuentes como TikTok para la promoción de productos y servicios, Google sigue siendo el rey a la hora de encontrar algo en internet. Por tanto, quien quiera posicionar tiene que mirar sí o sí a la principal fuente de respuestas

Thermomix TM7

Llega la Thermomix TM7: más innovadora y tecnológica que nunca

Como usuario del robot de cocina más famoso de todos los tiempos, este fin de semana me quedé parado tras recibir un mail de Vorwerk, anunciado el lanzamiento de la Thermomix TM7, la actualización de una máquina que me ha tantas y tantas alegrías y facilidades para la gastronomía. Y con solo ver las imágenes

seguridad de los datos personales

Descuidos en tu día a día que comprometen la seguridad de los datos personales

Hoy es el Día de Internet Segura, una jornada para concienciar a los usuarios sobre la importancia de cuidar la seguridad de los datos personales. La seguridad en Internet se ha convertido en una prioridad global para todos, amén del creciente número de robos virtuales e intrusiones de los delincuentes a la información sensible de

planes de entrenamiento con IA

La era de los gimnasios smart y los planes de entrenamiento con IA

El sector de los gimnasios está empezando a introducir la tecnología para sus usuarios. Los planes de entrenamiento con IA ya son una realidad en espacios como los de Metropolitan. Es cuestión de tiempo que toda la innovación que viene de la tecnología comience a aterrizar en nuestras vidas para cuidar nuestro cuerpo. De hecho,