Pesquisa de site

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 (` ` )

🚧
O método backticks é considerado obsoleto e não é recomendado atualmente. Você ainda encontrará referências em livros mais antigos.

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ê.

Artigos relacionados: