Usando substituição de comando no Bash Shell
A substituição de comando é um recurso importante que permite armazenar a saída de um comando em uma variável.
A substituição de comandos no bash nada mais é do que passar a saída de um comando para outro para vários casos de uso.
Parece complexo? Deixe-me compartilhar um exemplo rápido:
# Get the current date using the date command
current_date=$(date)
# Print the current date
echo "Today's date is: $current_date"
O script bash acima simplesmente usa o comando date
e passa a saída para a variável current_date
.
Mais tarde, a variável current_date
foi usada na instrução echo para imprimir a data atual.
Se você observar com atenção, usei $ (...)
em torno do comando date que capturou a saída do comando date e a passou para a variável current_date
.
Sim, essa é uma forma de substituição de comandos no bash, mas também existem outras maneiras. Vamos dar uma olhada.
Como substituir comandos no bash
Existem duas maneiras de substituir comandos no bash:
Usando parênteses de dólar $()
Usando crases (` `)
Portanto, neste tutorial, compartilharei como você pode usar os dois métodos para substituição de comandos e também como você pode fazer isso de forma aninhada.
Vamos começar com o primeiro.
Substituição de comando usando parênteses cifrão $()
Para usar os parênteses cifrão para substituição de comando, tudo que você precisa fazer é seguir a sintaxe de comando fornecida:
Variable=$(command)
Você também pode adicionar texto adicional para dar suporte à saída do comando, conforme mostrado aqui:
Variable="Optional text $(command)"
Deixe-me dar um exemplo simples. Aqui, usei o comando whoami para encontrar o usuário conectado no momento com o comando echo:
echo "The current user is: $(whoami)"
Você também pode atribuir o valor inteiro à variável e usá-lo em qualquer lugar do próprio script bash:
#!/bin/bash
current_user=$(whoami)
echo "The current user is: $current_user"
Se você estiver curioso, aqui está o resultado esperado após executar o script acima:
Embora a saída seja semelhante ao exemplo anterior, neste script, o que fiz foi substituir o valor do comando whoami
e passá-lo para a variável current_user
.
Mais tarde, usei-o na instrução echo.
Como alternativa, você pode usar várias substituições de comandos.
Por exemplo, aqui usei duas vezes para a instrução echo:
echo "Hello, $(whoami)! You are running this script on $(date)."
Muito legal. Certo?
Substituição de comando usando crases (` ` )
Esta é outra forma de substituir comandos no bash.
Para usar crases para a substituição do comando, basta seguir a sintaxe do comando fornecida:
variable=`command`
Se quiser usá-lo com texto adicional, você também pode fazer isso usando o seguinte:
variable="Additional text `date`"
Para demonstrar isso, usei um script bash simples:
#!/bin/bash
result=`echo "5 + 7" | bc`
echo "The result of the calculation is: $result"
No script acima, usei o comando bc e canalizei-o para o comando echo para calcular a adição de dois números e armazenei-o na variável result
.
Mais tarde, foi impresso com a declaração echo.
Aqui está o que você pode esperar ao executar o script acima:
Usando crases para múltiplas substituições
Para usar crases para múltiplas substituições, use a seguinte sintaxe:
result=`command1 \`command2\` command3\`
Sim, você deve separar cada comando com a barra invertida (\).
Se você quiser adicionar texto adicional, ficará assim:
result= `command1 \ "Additional text `command2\` Some more text here `command3\`"`
Em termos simples, você pode adicionar texto em qualquer lugar na sintaxe entre ""
.
Por exemplo, aqui, usei crases para múltiplas substituições para obter a data atual e calcular a adição:
result=`echo "Today is \`date\`, and the result of the calculation is \`echo 5 + 7 | bc\`."`
echo "$result"
Bem fácil. Certo?
Mais sobre bash e substituição
A substituição de processos também é um excelente recurso do bash, embora menos conhecido.
Quer automatizar operações no bash? Veja como você faz isso:
Espero que este guia seja útil para você.