Come faccio a testare le espressioni complesse con bash?

Posso solo fare semplicemente espressioni come 1=1 and 0=1

 test 1 = 1 -a 0 = 1 

Ma come fare espressioni complesse come 1=1 and (0=1 or 1=1) ?

  • mostra liberamente più memory utilizzata rispetto al totale dei processi totali
  • Come si fa a sostituire il block dei caps per controllare in xfce?
  • Come eseguire automaticamente uno script quando il contenuto di una directory cambia in Linux?
  • Migliorare le performance TCP su una networking gigabit con un sacco di connessioni e un elevato traffico di piccoli pacchetti
  • Nuovo programma di linux per linux?
  • Come eseguire il grep httpd error_log entro un intervallo di tempo?
  • 4 Solutions collect form web for “Come faccio a testare le espressioni complesse con bash?”

    O utilizzare le chiamate multiple di prova:

     test 1 = 1 && test 0 = 1 -o 1 = 1 

    o [[:

     [[ 1 = 1 && (0 = 1 || 1 = 1) ]] 

    Puoi usare il test o [] finché fai attenzione, ricordando che le parentesi devono essere sfuggite ei termini devono essere separati da spazi:

     if [ \( a = a \) -a \( a = b -ob = b \) ] then echo Yes else echo No fi 

    Quella eco 'Sì' per me. Di solito è più facile utilizzare l'operatore Bash e Korn [[]] invece; non devi fare altrettanto fuggire.

    La domanda è già risolta, ma un paio di consigli di stile che si potrebbe considerare (e forse rifiutare :-)):

    Se sei chi lo scrive e lo troverai confuso, forse:

    • Utilizzare extra () anche se non sono necessari, potrebbe renderlo più chiaro.
    • Forse anche utilizzare gli anelli annidati invece di un sacco di dichiarazioni.

    Florian è perlopiù corretto sopra, ma tenga presente che bash ha anche un'espansione aritmetica che è un po 'più bello quando si stanno confrontando le variables.

    Vedi qui per ulteriori informazioni.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.