Qual é a diferença entre os operadores de bash [[vs [vs (vs ((

Qual é a diferença entre os operadores de bash [[vs [vs (vs ((
O Bash fornece vários operadores para comparar valores, condições de teste e executar operações matemáticas. Esses operadores incluem [[, [, (e (e geralmente podem ser confusos para novos usuários. Aqui está uma visão geral dos diferentes operadores e suas funções.

Suportes quadrados duplos [[]]

Os [[e]] são usados ​​para expressões condicionais em bash. O [[é uma versão avançada dos colchetes quadrados únicos [] e é usado para correspondência de padrões, expressões regulares e expressões condicionais avançadas. O [[operador é mais poderoso que [e é preferido para muitos casos.

#!BIN/BASH
String = Linux
se [[$ String == "Linux"]]; então
eco "a string é Linux"
fi

No código a seguir, o operador de colchetes duplos é usado para verificar se o valor da variável $ string é igual à string "Linux":

Suportes quadrados únicos []

Os [e] são usados ​​para expressões condicionais em Bash. Também é chamado de comando "teste". O operador de suportes quadrados únicos [também é usado para expressões condicionais, mas tem mais limitações do que [[. É útil para comparações e testes básicos, como a verificação se existir um arquivo ou se uma string estiver vazia.

#!BIN/BASH
# Defina o nome do arquivo para verificar
file = "/home/aaliyan/documents/Bashfile2.sh "
# Verifique se o arquivo existe
se [-f $ arquivo]; então
eco "o arquivo existe"
outro
eco "o arquivo não existe"
fi

Este script verifica se um arquivo chamado “Bashfile2.SH ”existe no respectivo diretório e, se o arquivo existir, ele imprime a mensagem“ O arquivo existe ”para o console, caso contrário, imprimirá“ o arquivo não existe ”:

Parênteses ()

O operador de parênteses (é usado para executar comandos em um ambiente de subshell. Isso significa que quaisquer alterações feitas no ambiente dentro dos parênteses não afetam o ambiente da concha pai.

#!BIN/BASH
# Alterar diretório para/home/user/diretório e listar seu conteúdo
(CD/Home/Aaliyan/Documents && LS)

No código a seguir, o operador de parênteses é usado para alterar o diretório para/home/aaliyan/documentos e executar o comando LS dentro de uma subshell:

Parênteses duplos (())

Os (e) são usados ​​para avaliação aritmética e suporta recursos mais avançados do que o operador de parênteses únicos (, como operações bitwise, abaixo está um exemplo de script de bash que demonstra o uso de parênteses duplos:

#!BIN/BASH
# Defina os valores de A, B e C
a = 7
b = 9
c = 2
# Verifique se a soma de A e B é maior que C
if (($ a + $ b> $ c)); então
eco "A soma de A e B é maior que C"
fi

No código a seguir, o operador de parênteses duplos é usado para verificar se a soma das variáveis ​​$ A e $ B é maior que o valor da variável $ C:

Para entender melhor as diferenças entre esses operadores, dei uma tabela que pode ajudá -lo a escrever um código bash mais eficiente e usar esses operadores de bash de maneira mais eficaz:

Operador Propósito Exemplo
[[expressão]] Expressões condicionais se [[$ string == "Linux"]]; então eco
[Expressão] Expressões condicionais básicas se [-f $ arquivo]; então ecoarem “o arquivo existe”
(comando) Executar comandos em um ambiente de subshell (CD/Home/Usuário/Diretório && LS)
((expressão)) Operaçoes aritimeticas if (($ a + $ b> $ c)); então eco

Conclusão

Os operadores de bash [[]], [], () e (()) têm usos e sintaxe diferentes. O operador de duplo quadrado [[]] é usado para correspondência de padrões e comparação de strings, enquanto o operador único [] é usado para declarações condicionais e testes de arquivo. O operador parênteses () é usado para agrupar comandos e o operador duplo parênteses (()) é usado para avaliação aritmética. É importante usar o operador apropriado para a tarefa em questão para garantir que seus scripts bash sejam precisos e eficientes.