2
respostas

por que não tem o $???????

Boa tarde, porque tem ou nao tem o $? Duvidas destacadas em negrito!

o que faz o 1 no exit? e se for 2, 3, 4, 5, 6.....?

read -p "Entre com a operação desejada: 'compactar' ou 'descompactar'" operacao

case "$operacao" in "compactar") read -p "Nome do arquivo final (.tar.gz)" arquivo_saida read -p "Lista de arquivos separados por espaço:" arquivos tar -czf "$arquivo_saida" $arquivos echo "Compactados com sucesso em $arquivo_saida" ;; "descompactar") read -p "Nome do arquivo a descompactar (.tar.gz)" arquivo read -p "Diretorio de destino" diretorio tar -xzf "$arquivo" -C "$diretorio" echo "Descompactado com sucesso em $diretorio" ;; *) echo "Operacao invalida!" echo "Selecione descompactar ou compactar" exit 1 esac

2 respostas

Oi, Bruno!

Vamos lá, vou tentar esclarecer suas dúvidas:

Sobre o $?

O $? é uma variável especial no shell que armazena o código de retorno do último comando executado. Ele é muito útil para verificar se um comando foi bem-sucedido ou não. Por exemplo, se você executar um comando e ele for bem-sucedido, o $? geralmente será 0. Se houver um erro, ele retornará um valor diferente de 0.

Sobre o exit 1

O comando exit é usado para sair de um script e retornar um código de status ao sistema operacional. O número que você coloca após exit (no caso, 1) é o código de status que será retornado.

  • exit 0: Indica que o script foi executado com sucesso.
  • exit 1: Indica que houve um erro genérico.
  • exit 2, 3, 4, etc.: Você pode usar esses valores para indicar diferentes tipos de erros específicos no seu script.

Por exemplo, se você quiser indicar que um erro específico ocorreu, você pode usar um código de saída diferente:

if [ "$operacao" != "compactar" ] && [ "$operacao" != "descompactar" ]; then
    echo "Operacao invalida!"
    echo "Selecione descompactar ou compactar"
    exit 1  # Aqui você está indicando que houve um erro genérico
fi

Exemplo Prático

Aqui está um exemplo prático de como você pode usar o $? e diferentes códigos de saída:

#!/bin/bash

read -p "Entre com a operação desejada: 'compactar' ou 'descompactar'" operacao

case "$operacao" in
    "compactar")
        read -p "Nome do arquivo final (.tar.gz)" arquivo_saida
        read -p "Lista de arquivos separados por espaço:" arquivos
        tar -czf "$arquivo_saida" $arquivos
        if [ $? -eq 0 ]; then
            echo "Compactados com sucesso em $arquivo_saida"
            exit 0
        else
            echo "Erro ao compactar arquivos"
            exit 2
        fi
    ;;
    "descompactar")
        read -p "Nome do arquivo a descompactar (.tar.gz)" arquivo
        read -p "Diretorio de destino" diretorio
        tar -xzf "$arquivo" -C "$diretorio"
        if [ $? -eq 0 ]; then
            echo "Descompactado com sucesso em $diretorio"
            exit 0
        else
            echo "Erro ao descompactar arquivos"
            exit 3
        fi
    ;;
    *)
        echo "Operacao invalida!"
        echo "Selecione descompactar ou compactar"
        exit 1
    ;;
esac

Neste exemplo, se a operação de compactação ou descompactação falhar, o script retornará um código de erro específico (2 ou 3), que pode ser útil para depuração.

Bons estudos!

Olá Lucas, entendi perfeitamente, gostei da funcionalidade, muitíssimo obrigado.