Saída do comando BASH para a variável

Bash Command Output Variable



Diferentes tipos de comandos bash precisam ser executados a partir do terminal com base nos requisitos do usuário. Quando o usuário executa qualquer comando do terminal, ele mostra a saída se não houver erro, caso contrário, ele mostra a mensagem de erro. Às vezes, a saída do comando precisa ser armazenada em uma variável para uso futuro. O recurso de substituição de comando shell do bash pode ser usado para esse propósito. Como você pode armazenar diferentes tipos de comandos de shell na variável usando esse recurso, é mostrado neste tutorial.

variável= $(comando)
variável= $(comando [opção…]argumento1 argumentos2 ...)
variável= $(/caminho/para/comando)

OU







variável=``comando``
variável=``comando [opção…]argumento1 argumentos2 ...``
variável=`/caminho/para/comando``

*** Nota: Não use nenhum espaço antes e depois do sinal de igual ao usar os comandos acima.



Saída de comando único para uma variável

Os comandos Bash podem ser usados ​​sem qualquer opção e argumento para os comandos em que essas partes são opcionais. Os dois exemplos a seguir mostram os usos da substituição de comando simples.



Exemplo 1:

bash ` data » comando é usado para mostrar a data e hora atuais. O seguinte script irá armazenar a saída de ` data » comando em $ data atual variável usando a substituição de comando.





$data atual= $(encontro)
$jogou fora 'Hoje é$ current_date'

Saída:



Exemplo # 2:

`pwd` comando mostra o caminho do diretório de trabalho atual. O seguinte script armazena a saída de `pwd` comando na variável, $ current_dir e o valor desta variável é impresso usando `echo` comando.

$current_dir=``pwd``
$jogou fora 'O diretório atual é:$ current_dir'

Saída:

Comando com opção e argumento

A opção e o argumento são obrigatórios para alguns comandos bash. Os exemplos a seguir mostram como você pode armazenar a saída do comando com opção e argumento em uma variável.

Exemplo # 3:

Bash ` banheiro comando é usado para contar o número total de linhas, palavras e caracteres de qualquer arquivo. Este comando usa -c, -w e -l como opção e nome de arquivo como argumento para gerar a saída. Crie um arquivo de texto chamado frutas.txt com os dados a seguir para testar o próximo script.
frutas.txt

frutas.txt
Manga
laranja
Banana
Uva
Goiaba
maçã

Execute os seguintes comandos para contar e armazenar o número total de palavras no frutas.txt arquivo em uma variável, $ count_words e imprima o valor usando ` echo` comando.

$count_words=``banheiro -nofrutas.txt``
$jogou fora 'Total de palavras em fruits.txt é$ count_words'

Saída:

Exemplo # 4:

`cut` é outro comando bash que usa opção e argumento para gerar a saída. Crie um arquivo de texto chamado dia da semana.txt com nomes de sete dias da semana para executar o próximo script.

dia da semana.txt

Segunda-feira
terça
quarta-feira
quinta-feira
sexta-feira
sábado
Domigo

Crie um arquivo bash chamado cmdsub1.sh com o seguinte script. Neste script, enquanto loop é usado para ler o conteúdo de dia da semana.txt arquivo linha por linha e leia os três primeiros caracteres de cada linha usando ` cut` comando. Após o corte, o valor da string é armazenado na variável $ dia . Em seguida, se a instrução for usada para verificar o valor de $ dia é ' Sol' ou não. A saída irá imprimir ‘ Domingo é feriado 'Quando se a condição for verdadeira, caso contrário, ele imprimirá o valor de $ dia .

cmdsub1.sh

#! / bin / bash
nome do arquivo='weekday.txt'
enquanto leituralinha;Faz
dia=``jogou fora $ linha | cortar -c 1-3``
E se [ $ dia=='Sol' ]
então
jogou fora 'Domingo é feriado'
outro
jogou fora $ dia
ser
feito<$ filename

Execute o script.

$gatodia da semana.txt
$bashcmdsub1.sh

Saída:

Usando substituição de comando em loop

Você pode armazenar a saída da substituição do comando em qualquer variável de loop que é mostrada no próximo exemplo.

Exemplo # 5:

Crie um arquivo chamado cmdsub2.sh com o seguinte código. Aqui, ` ls -d * / O comando `é usado para recuperar todas as listas de diretórios do diretório atual. O loop for é usado aqui para ler cada diretório da saída e armazená-lo na variável $ dirname que é impresso mais tarde.

cmdsub2.sh

#! / bin / bash
para dirname no$(ls -d * /)
Faz
jogou fora '$ dirname'
feito

Execute o script.

$bashcmdsub2.sh

Saída:

Usando comandos aninhados

Como você pode usar vários comandos usando a barra vertical (|) é mostrado no exemplo anterior. Mas você pode usar comandos aninhados na substituição de comando, onde a saída do primeiro comando depende da saída do segundo comando e funciona ao contrário do comando pipe (|).

Sintaxe de comando aninhada:

Onde=``command1 ``comando``

Exemplo # 6:

Dois comandos, ` jogou fora `e` quem `são usados ​​neste exemplo como o comando aninhado. Aqui, ` quem `O comando será executado primeiro para imprimir as informações do usuário do usuário atualmente conectado. A saída do ` quem O comando `será executado por` jogou fora `comando e a saída de` jogou fora `irá armazenar na variável $ var . Aqui, a saída de ` jogou fora O comando `depende da saída de` quem `comando.

$Onde=``jogou fora``quem``
$jogou fora $ var

Saída:

Usando o caminho de comando

Se você souber o caminho do comando, poderá executá-lo especificando o caminho do comando ao usar a substituição de comando. O exemplo a seguir mostra o uso do caminho do comando.

Exemplo # 7:

`whoami` comando mostra o nome de usuário do usuário atualmente conectado. Por padrão, este comando é armazenado em / usr / sou/ pasta. Execute o seguinte script para executar ` whoami` comando usando caminho e armazenamento na variável, $ output, e imprimir o valor de $ output .

$saída= $(/usr/sou/Quem sou eu)
$jogou fora $ output

Saída:

Usando o argumento da linha de comando

Você pode usar o argumento da linha de comando com o comando como o argumento na substituição do comando.

Exemplo # 8:

Crie um arquivo bash chamado cmdsub3.sh com o seguinte script. ` nome de base `comando é usado aqui para recuperar o nome do arquivo de 2WLargumento de linha de comando e armazenado na variável, $ filename . Nós conhecemos o 1sto argumento da linha de comando é o nome do script em execução, denotado por $ 0.

#! / bin / bash
nome do arquivo=``nome de base $ 1``
jogou fora 'O nome do arquivo é$ filename. '

Execute o script com o seguinte valor de argumento.

$bashcmdsub3.sh Desktop/temp/hello.txt

Aqui, o nome de base do caminho, Desktop / temp / hello.txt é ' hello.txt ’. Então, o valor do $ filename vai ser hello.txt .

Saída:

Conclusão:

Vários usos de substituições de comando são mostrados neste tutorial. Se você precisa trabalhar com vários comandos ou comandos dependentes e armazenar o resultado temporariamente para fazer algumas outras tarefas posteriormente, você pode usar este recurso em seu script para obter a saída.

Mais informações no vídeo: