
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 ); then
funcionaria, mas estaria simplesmente avaliando o retorno do subshell.
((
Isso permite a aritmética do shell, que pode ser usada em conjunto if
quando 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.