GNU/Linux >> Linux Esercitazione >  >> Linux

La differenza tra gli operatori Bash [[ Vs [ Vs ( Vs ((?

Sono un po' confuso su cosa fanno questi operatori in modo diverso se usati in bash (parentesi, parentesi quadre, parentesi e parentesi doppie).

[[ , [ , ( , ((

Ho visto persone usarli su affermazioni if ​​come questa :

if [[condition]]

if [condition]

if ((condition))

if (condition)

Risposta accettata:

Nelle shell tipo Bourne, un if di solito assomiglia a

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

Il then La clausola viene eseguita se il codice di uscita di command-list1 l'elenco dei comandi è zero. Se il codice di uscita è diverso da zero, allora else la clausola viene eseguita. command-list1 può essere
semplice o complesso. Può essere, ad esempio, una sequenza di una o più pipeline separate da uno degli operatori ; , & , && , || o nuova riga. Il if le condizioni mostrate di seguito sono solo casi speciali di command-list1 :

  1. if [ condition ]

    [ è un altro nome per il tradizionale test comando. [ / test è un'utilità POSIX standard. Tutte le shell POSIX lo hanno integrato (sebbene non sia richiesto da POSIX²). Il test il comando imposta un codice di uscita e il if dichiarazione agisce di conseguenza. I test tipici sono se un file esiste o un numero è uguale a un altro.

  2. if [[ condition ]]

    Questa è una nuova variante aggiornata su test ¹ da ksh che bash , zsh , , casella occupata anche supporto. Questo [[ ... ]] build imposta anche un codice di uscita e if dichiarazione agisce di conseguenza. Tra le sue funzionalità estese, può verificare se una stringa corrisponde a un modello di caratteri jolly (non in busybox sh ).

  3. if ((condition))

    Un altro ksh estensione che bash e zsh anche supporto. Questo esegue l'aritmetica. Come risultato dell'aritmetica, viene impostato un codice di uscita e il if dichiarazione agisce di conseguenza. Restituisce un codice di uscita pari a zero (vero) se il risultato del calcolo aritmetico è diverso da zero. Come [[...]] , questo modulo non è POSIX e quindi non è portatile.

  4. if (command)

    Questo esegue il comando in una subshell. Al termine del comando, imposta un codice di uscita e il if dichiarazione agisce di conseguenza.

    Un motivo tipico per utilizzare una subshell come questa è limitare gli effetti collaterali di command se command assegnazioni di variabili richieste o altre modifiche all'ambiente della shell. Tali modifiche non rimangono dopo il completamento della subshell.

  5. if command

    viene eseguito il comando e il if l'istruzione agisce in base al suo codice di uscita.

Correlati:come posso usare bash come shell di accesso quando l'amministratore di sistema si rifiuta di farmi cambiare?


Linux
  1. La differenza tra un comando integrato e uno che non lo è?

  2. La differenza tra [[ $a ==Z* ]] e [ $a ==Z* ]?

  3. Differenza tra tubazioni ed espansione dei comandi?

  4. Qual è la differenza tra individuare e trovare il comando in Linux

  5. Qual è la differenza tra #!/usr/bin/env bash e #!/usr/bin/bash?

Comando di uscita Bash e codici di uscita

Comprendere la differenza tra il comando sudo e su su Linux

La differenza tra più, meno e la maggior parte dei comandi

Qual è la differenza tra Cat e Touch Command

Qual è la differenza tra il comando apt e apt-get?

Qual è la differenza tra i comandi kill e killall?