Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Segue minha resolução para o exercício

Implementei a lógica de checagem do diretório do arquivo seguindo o exercício anterior, ou seja, ele checa se os parâmetros foram passados corretamente, depois eu defino as variáveis com base nas posições dos parâmetros passados e então verifico se os diretórios da segunda posição são válidas, caso não sejam, um erro estoura para o usuário.

Se tudo estiver correto, é gerado um arquivo compactado e exibido para o usuário o sucesso da execução do Script.

#! /bin/bash

if [ "$#" -lt 2 ]; then
        echo "The program $0 request file name and name to compress"
        exit 1
fi
aggregated_file="$1"
dir_for_files=("${@:2}")

for file in "${dir_for_files[@]}"; do
    if [ ! -e "$file" ]; then
        echo "Error: The path '$file' does not exist."
        exit 1
    fi
done

tar -czf "$aggregated_file" "${dir_for_files[@]}"

echo "compress successfully at $aggregated_file"
1 resposta
solução!

Oi, Matheus!

Pelo que você descreveu e pelo script que compartilhou, você está no caminho certo para resolver o exercício. Seu script verifica se os parâmetros foram passados corretamente e se os diretórios informados existem antes de tentar compactá-los. Isso está de acordo com a ideia de validar o caminho informado pelo usuário.

Um ponto que você pode considerar é melhorar a mensagem de erro para deixar claro que o script espera um diretório, e não apenas um arquivo. Além disso, se o exercício pede especificamente a verificação de diretórios, você pode ajustar a condição de verificação para garantir que o caminho seja realmente um diretório, usando -d em vez de -e. Veja como ficaria:

#! /bin/bash

if [ "$#" -lt 2 ]; then
    echo "The program $0 request file name and name to compress"
    exit 1
fi

aggregated_file="$1"
dir_for_files=("${@:2}")

for dir in "${dir_for_files[@]}"; do
    if [ ! -d "$dir" ]; then
        echo "Error: The path '$dir' is not a valid directory."
        exit 1
    fi
done

tar -czf "$aggregated_file" "${dir_for_files[@]}"

echo "Compressed successfully at $aggregated_file"

Com essa alteração, o script verifica se o caminho é um diretório válido. Isso está mais alinhado com a proposta de verificar a validade de um caminho de diretório.

Bons estudos! Conte sempre conosco aqui na Alura! :)