O comando Linux Set

O comando Linux Set

O comando Linux Set é um comando Shell embutido que permite exibir ou definir variáveis ​​de concha e ambiente. Neste guia, cobrimos o comando set e demonstramos as várias maneiras pelas quais o utilitário da linha de comando pode ser usado.

Sintaxe básica

O comando SET leva a seguinte sintaxe:

$ comando -Options argumentos

Opções de comando

Existem várias opções que podem ser usadas com o comando set. Vamos explorar alguns deles:

  • -a: A opção -a define todas as variáveis ​​ou funções criadas ou modificadas para exportação.
  • -B: A opção -b alerta imediatamente o usuário quando os trabalhos em segundo plano são encerrados.
  • -e: A opção -e instrui um shell a sair se um comando produz um status de saída diferente de zero. Simplificando, o shell sai quando o comando falha.
  • -f: A opção -f desativa a geração de nomes de arquivos.
  • -H: A opção -h é ativada por padrão. Ele localiza e depois se lembra de uma função que aguarda a execução.
  • -n: A opção -n apenas lê comandos, mas falha em executá -los.
  • -t: A opção -t sai ao ler e executar um comando.
  • -você: A opção -u trata variáveis ​​não definidas ou indefinidas, exceto para parâmetros especiais, como curingas (*) ou "@" como erros durante a expansão dos parâmetros.
  • -v: A opção -v imprime as linhas da entrada da concha enquanto elas estão sendo lidas.
  • -x: A opção -x imprime argumentos de comando durante a execução

Valores de saída

A seguir, são apresentados os valores de saída do shell associados ao comando set:

0: O comando foi bem -sucedido.

  1. O comando falhou devido a um argumento de comando incorreto
  2. Falha de comando devido a um argumento esperado que está faltando

Defina o comando sem nenhuma opção

Sem argumentos, o comando set lista todas as variáveis ​​do shell, incluindo seus valores.

$ set

Defina parâmetros posicionais com o comando set

O comando Linux Set pode ser usado para atribuir valores aos parâmetros posicionais. Um parâmetro posicional é uma variável em um programa de shell e seu valor é referenciado como $ n onde n é um dígito que denota a posição do parâmetro.

O valor de US $ 1 é o primeiro parâmetro posicional após o nome do arquivo ou comando. O valor de US $ 2 é o segundo parâmetro e assim por diante.

Suponha que executamos o comando mostrado abaixo:

$ set vermelho azul verde

Aqui, o Red corresponde ao parâmetro posicional $ 1, o azul corresponde ao parâmetro $ 2 e, finalmente, Green corresponde a $ 3.

Para listar todos os parâmetros na ordem de $ 1 $ 2 $ 3 executam o comando ECHO abaixo:

$ eco "$*"

Para listar o primeiro parâmetro, execute:

$ eco $ 1

Para listar o segundo parâmetro, execute:

$ eco $ 2

E assim por diante.

Use o comando SET para despertar todos os parâmetros posicionais

Para despertar os parâmetros posicionais, execute o comando set com hífens duplos - como mostrado.

$ set --

Mais uma vez, se você tentar listar os parâmetros posicionais, você obterá uma saída em branco, implicando que eles não tenham sido.

Ignore uma variável não ligada

Por padrão, um script de shell tem vista para uma variável indefinida. No script myscript.SH mostrado abaixo, a variável $ foo ainda não está definida e, portanto, não existe.

Quando o script é executado, ele retorna uma linha em branco para a linha que contém uma variável inexistente e passa a executar a seguinte linha:

$ ./myscript.sh

Essa anomalia é indesejada e os desenvolvedores desejam ser notificados em caso de variáveis ​​indefinidas. A diretiva set -u no início do script imprimirá um erro no shell se o script for executado em uma variável indefinida.

Quando o script é executado mais uma vez, o erro sobre uma variável não ligada é exibido.

Exibir um erro se um comando não existe

Geralmente, se um comando for executado em um erro e falhar em executar, o shell do bash continuará a executar os comandos restantes. Tomemos, por exemplo, o script do shell abaixo:

O comando foobar é inexistente e um erro deve ser exibido no shell do bash quando o script é executado para mostrar que o script em um problema. No entanto, isso não acontece e a concha é executada na próxima linha, como mostrado:

Como o exemplo anterior, isso não é uma boa prática ao escrever scripts de shell, especialmente para segurança e depuração. Idealmente, o script deve parar quando encontrar um erro. Para abordar esse cenário, defina o conjunto da diretiva -e no início do script, como mostrado.

Quando você tenta executar o script novamente, você enfrentará o erro como mostrado:

Exibir um erro em comandos tubos

O conjunto de diretiva -e não funciona ao lidar com comandos canalizados. Considere o script abaixo:

Quando você executa o script, ele retorna um erro, mas continua a executar o comando subsequente:

Para superar esse obstáculo, passe o conjunto -EO PipeFail Directive, como mostrado:

$ set -EO Pipefail

Desta vez, o script termina e não executa a próxima linha.

Defina o Allexport e notifique as opções

Para definir o Allexport e notificar opções, execute o comando:

$ set -O Allexport -o Notify

Conclusão

Esses foram alguns exemplos de como você pode usar o comando set em seus scripts de shell. Como observado, o comando set pode ser uma ferramenta útil na definição de parâmetros posicionais e depurando seus scripts de shell.