[

[

Como um novato muito confuso, o que há com oSEdeclaração e[ ], [[ ]], ( ), (( ))

por que é

if [ $jengnr -eq 1 ]; then

correto, mas aqui é duplo:

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

e então li que um if aninhado dentro de um if deveria ser (( )) (não meu 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

mas usei [[ ]] em uma instrução if que estava dentro de uma instrução if [[ ]] e funcionou?

Alguém pode explicar o quê, quem e por que existem 4 se diferentes?

.. e quando usá-los corretamente?

Responder1

[

Este é o comando shell test (às vezes também integrado) e é um método portátil para realizar testes de shell.

[[

Isso é frequentemente chamado de "teste estendido", é suportado principalmente apenas por ksh e bash e permite mais recursos do que o teste de shell, mas não é tão portátil

(

Este não é um comando de teste, um parêntese único criará um subshell. As instruções if simplesmente avaliam o código de retorno do comando que as segue, portanto, using if ( command ); thenfuncionaria, mas estaria simplesmente avaliando o retorno do subshell.

((

Isso permite a aritmética do shell, que pode ser usada em conjunto ifquando você está testando condições relacionadas à aritmética.


Além disso, observe que não existe tal regra para instruções if aninhadas; você pode usar qualquer combinação desses métodos em qualquer nível de aninhamento.

informação relacionada