Saída de comando bash para a variável

Saída de comando bash para a variável
Diferentes tipos de comandos bash precisam ser executados 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, mostrará 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 do comando shell do Bash pode ser usado para esse fim. Como você pode armazenar diferentes tipos de comandos de shell na variável usando esse recurso é mostrado neste tutorial.

Sintaxe de substituição de comando:

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

OU

variável = 'comando'
variável = 'comando [opção…] argumentos1 argumentos2…'
variável = '/caminho/para/comando'

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

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

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

Exemplo 1:

tocar 'data' O comando é usado para mostrar a data e a hora atuais. O script a seguir armazenará a saída de 'data' comando em $data atual variável usando a substituição de comando.

$ current_date = $ (data)
$ echo "Hoje é $ current_date"

Saída:

Exemplo#2:

'PWD' Comando mostra o caminho do diretório de trabalho atual. O script a seguir armazena a saída de 'PWD' comando na variável, $ current_dir e o valor dessa variável é impresso usando 'eco' comando.

$ current_dir = 'pwd'
$ echo "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:

Tocar 'Banheiro' O 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 do arquivo como argumento para gerar a saída. Crie um arquivo de texto chamado frutas.TXT com os seguintes dados para testar o próximo script.
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 Arquive em uma variável, $ count_words e imprima o valor usando 'eco' comando.

$ count_words = 'wc -w frutas.TXT'
$ eco "Palavras totais em frutas.txt é $ count_words "

Saída:

Exemplo#4:

'corte' é outro comando bash que usa a opção e argumento para gerar a saída. Crie um arquivo de texto chamado Dia da semana.TXT com nomes de sete semanas para executar o próximo script.

Dia da semana.TXT

Segunda-feira
Terça-feira
Quarta-feira
Quinta-feira
Sexta-feira
Sábado
Domingo

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

CMDSub1.sh

#!/BIN/BASH
arquivo de arquivo = 'dia da semana.TXT'
enquanto lida linha; fazer
DIA = 'ECHO $ ​​LINE | Corte -C 1-3 '
Se [$ dia == "Sun"]
então
eco "domingo é o feriado"
outro
eco $ dia
fi
feito<$filename

Execute o script.

$ CAT DIA DA SEMANA.TXT
$ Bash CMDSub1.sh

Saída:

Usando a substituição de comando em loop

Você pode armazenar a saída de substituição de comando em qualquer variável de loop que seja 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 toda a lista de diretórios do diretório atual. Para o loop é 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 o Dirname em $ (ls -d */)
fazer
eco "$ dirname"
feito

Execute o script.

$ Bash CMDSub2.sh

Saída:

Usando comandos aninhados

Como você pode usar vários comandos usando Pipe (|) é 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 oposto ao comando do tubo (|).

Sintaxe do comando aninhado:

var = 'comando1 \' comando \ "

Exemplo#6:

Dois comandos, 'eco' e 'Quem'são usados ​​neste exemplo como o comando aninhado. Aqui, 'Quem'Comando executará primeiro que imprimirá as informações do usuário do usuário atualmente conectado. A saída do 'Quem'Comando será executado por'eco'Comando e a saída de'eco'vai armazenar na variável $ var. Aqui, a saída de 'eco'Comando depende da saída de'QuemComando.

$ var = 'eco \' quem \ "
$ echo $ var

Saída:

Usando o caminho do comando

Se você conhece o caminho do comando, poderá executar o comando 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:

'Quem sou eu' O comando mostra o nome de usuário do usuário atualmente conectado. Por padrão, este comando é armazenado em /usr/bin/ pasta. Execute o seguinte script para correr 'Quem sou eu' comando usando o caminho e armazenar na variável, $ saída, e imprimir o valor de $ saída.

$ output = $ (/usr/bin/whoami)
$ ECHO $ ​​outida

Saída:

Usando o argumento da linha de comando

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

Exemplo#8:

Crie um arquivo bash chamado CMDSub3.sh com o seguinte script. 'nome de base'O comando é usado aqui para recuperar o nome do arquivo do 2nd argumento da linha de comando e armazenado na variável, $ nome do arquivo. Nós sabemos o 1st O argumento da linha de comando é o nome do script de execução, que é indicado por $ 0.

#!/BIN/BASH
nome do arquivo = 'nome de base $ 1'
eco "O nome do arquivo é $ FileName."

Execute o script com o seguinte valor de argumento.

$ Bash CMDSub3.SH Desktop/Temp/Hello.TXT

Aqui, o nome da base do caminho, Desktop/temp/Olá.TXT é 'olá.TXT'. Então, o valor do $ nome do arquivo vai ser olá.TXT.

Saída:

Conclusão:

Vários usos das substituições de comando são mostrados neste tutorial. Se você precisar trabalhar com vários comandos ou depender comandos e armazenar o resultado temporário para realizar outras tarefas posteriormente, poderá usar esse recurso em seu script para obter a saída.

Mais informações no vídeo: