1
resposta

[Reclamação] Faltam explicações sobre os comandos utilizados

Esse é meu primeiro contato com shell script e praticamente meu primeiro contato com comandos Linux, apesar da sintaxe ser menos complicada que do Java por exemplo, o instrutor apenas faz o projeto, com pouco ou nenhuma explicação do por quê está passando os comandos... Fica difícil até pensquisar na documentação, quando por exemplo: if [ "$#" -lt 2 ]

"$#" - "para testar o número de parâmetros" Isso é vago e não deixa claro o que segnifica, por exemplo... o -lt 2 é um <= de outras linguagens??? ou tem outros significados? os textos de apoio do curso também não aprofundaram essas questões até agora.

1 resposta

Olá, Rafael.

Tudo bem?

Entendo o seu ponto, e vou tentar te ajudar a entender a linha de código if [ "$#" -lt 2 ].

No contexto do shell script, essa linha é usada para verificar a quantidade de argumentos passados para o script. Vamos detalhar cada parte:

  1. "$#": Esta variável especial representa o número de argumentos passados para o script. Por exemplo, se você executar o script com três argumentos, como ./meu_script.sh arg1 arg2 arg3, então "$#" será igual a 3.

  2. -lt 2: Este é um operador de comparação que significa "less than" (menor que). No Bash, -lt é usado para comparar números inteiros. Então, "$# -lt 2" verifica se o número de argumentos é menor que 2.

Portanto, a linha if [ "$#" -lt 2 ]; then está verificando se o número de argumentos passados para o script é menor que 2. Se for, a condição é verdadeira e o bloco de código dentro do then será executado.

Aqui está um exemplo prático:

#!/bin/bash

if [ "$#" -lt 2 ]; then
    echo "O programa, $0, requer nome do arquivo e arquivos a serem compactados"
    exit 1
fi

arquivo_saida="$1"
arquivos=("${@:2}")

tar -czf "$arquivo_saida" "${arquivos[@]}"
echo "Compactado com sucesso em $arquivo_saida"

Se você executar este script sem passar argumentos suficientes, ele exibirá a mensagem de erro e sairá com o código 1:

$ ./compactador
O programa, ./compactador, requer nome do arquivo e arquivos a serem compactados

Mas se você passar os argumentos corretamente, ele executará a compactação:

$ ./compactador saida.tar.gz arquivo1.txt arquivo2.txt
Compactado com sucesso em saida.tar.gz

Muito obrigado pelo feedback, ele será passado para a equipe de conteúdo.

Espero ter ajudado. Qualquer dúvida manda aqui. Bons estudos.