GNU/Linux >> Tutoriales Linux >  >> Linux

La diferencia entre los operadores Bash [[ Vs [ Vs ( Vs ((?)

Estoy un poco confundido sobre qué hacen estos operadores de manera diferente cuando se usan en bash (corchetes, corchetes dobles, paréntesis y paréntesis doble).

[[ , [ , ( , ((

He visto a personas usarlas en declaraciones if como esta:

if [[condition]]

if [condition]

if ((condition))

if (condition)

Respuesta aceptada:

En shells tipo Bourne, un if la declaración generalmente se ve como

if
   command-list1
then
   command-list2
else
   command-list3
fi

El then se ejecuta si el código de salida de command-list1 lista de comandos es cero. Si el código de salida es distinto de cero, entonces else se ejecuta la cláusula. command-list1 puede ser
simple o complejo. Puede ser, por ejemplo, una secuencia de uno o más pipelines separados por uno de los operadores ; , & , && , || o nueva línea. El if las condiciones que se muestran a continuación son solo casos especiales de command-list1 :

  1. if [ condition ]

    [ es otro nombre para la test tradicional dominio. [ / test es una utilidad POSIX estándar. Todos los shells POSIX lo tienen incorporado (aunque POSIX² no lo requiere). La test El comando establece un código de salida y el if declaración actúa en consecuencia. Las pruebas típicas son si existe un archivo o si un número es igual a otro.

  2. if [[ condition ]]

    Esta es una nueva variación mejorada de test ¹ de ksh ese golpe , zsh , yash , busybox sh también apoyo. Este [[ ... ]] construct también establece un código de salida y el if declaración actúa en consecuencia. Entre sus funciones ampliadas, puede probar si una cadena coincide con un patrón de comodín (no en busybox sh ).

  3. if ((condition))

    Otro ksh extensión que bash y zsh también apoyo. Esto realiza la aritmética. Como resultado de la aritmética, se establece un código de salida y el if declaración actúa en consecuencia. Devuelve un código de salida de cero (verdadero) si el resultado del cálculo aritmético es distinto de cero. Me gusta [[...]] , este formulario no es POSIX y, por lo tanto, no es portátil.

  4. if (command)

    Esto ejecuta el comando en una subcapa. Cuando se completa el comando, establece un código de salida y el if declaración actúa en consecuencia.

    Una razón típica para usar una subcapa como esta es limitar los efectos secundarios del command si command asignaciones de variables requeridas u otros cambios en el entorno del shell. Dichos cambios no permanecen después de que se completa la subcapa.

  5. if command

    se ejecuta el comando y if declaración actúa de acuerdo con su código de salida.

Relacionado:¿cómo puedo usar bash como shell de inicio de sesión cuando el administrador del sistema se niega a permitirme cambiarlo?


Linux
  1. ¿La diferencia entre un comando incorporado y uno que no lo es?

  2. ¿El comando "eval" en Bash?

  3. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  4. ¿Diferencia entre tubería y expansión de comando?

  5. ¿Cuál es la diferencia entre #!/usr/bin/env bash y #!/usr/bin/bash?

Comando de salida de Bash y códigos de salida

Comprender la diferencia entre los comandos sudo y su en Linux

La diferencia entre más, menos y la mayoría de los comandos

¿Cuál es la diferencia entre el comando Cat y Touch?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Cuál es la diferencia entre los comandos kill y killall?