[

[

Como novato muy confundido, ¿qué pasa con elSIdeclaración y[ ], [[ ]], ( ), (( ))

por que es

if [ $jengnr -eq 1 ]; then

correcto, pero aquí es doble:

if [[ -f "$jdir$object.eng.dat" ]]; then

y luego leí que un if anidado dentro de un if debería ser (( )) (no es mi código)

#!/bin/bash
# Nested if statements
if [ $1 -gt 100 ]
then
echo Hey that\'s a large number.
if (( $1 % 2 == 0 ))
then
echo And is also an even number.
fi
fi

pero usé [[ ]] en una declaración if que estaba dentro de una declaración if [[ ]], ¿y funcionó?

¿Alguien puede explicar qué, quién y por qué hay 4 si diferentes?

.. ¿y cuando usarlos correctamente?

Respuesta1

[

Este es el comando de prueba de shell (a veces también incorporado) y es un método portátil para realizar pruebas de shell.

[[

Esto a menudo se conoce como "prueba extendida", es compatible principalmente solo con ksh y bash y permite más funciones que la prueba de shell, pero no es tan portátil.

(

Este no es un comando de prueba en absoluto, un paréntesis simple creará una subcapa. Las declaraciones if simplemente evalúan el código de retorno del comando que las sigue, por lo que usar if ( command ); thenfuncionaría, pero simplemente estaría evaluando el retorno del subshell.

((

Esto permite la aritmética de shell que se puede utilizar junto con ifcuando se realizan pruebas en condiciones relacionadas con la aritmética.


Además, tenga en cuenta que no existe tal regla para declaraciones if anidadas; puede utilizar cualquier combinación de estos métodos en cualquier nivel de anidación.

información relacionada