Criar Scripts Shell com Estruturas de Repetição

Red Hat Enterprise LinuxBeginner
Pratique Agora

Introdução

Neste desafio, você aprenderá a criar um script shell simples que utiliza estruturas de repetição (como for e while) para processar arquivos ou entradas via linha de comando. O shell scripting é uma ferramenta poderosa para automatizar tarefas repetitivas e otimizar seu fluxo de trabalho. Ao concluir este desafio, você ganhará experiência prática no desenvolvimento de scripts capazes de lidar com entradas dinâmicas e realizar diversas operações.

Criar um Script Shell com um Loop for

Nesta etapa, você criará um script shell que utiliza um loop for para percorrer uma lista de arquivos em um diretório e realizar uma operação em cada um deles. Este script demonstrará como processar múltiplos arquivos de forma dinâmica, uma tarefa comum no dia a dia de quem trabalha com scripts.

Tarefas

  • Criar um script shell que utilize um loop for para iterar sobre uma lista de arquivos em um diretório especificado.
  • Para cada arquivo encontrado, o script deve exibir o nome do arquivo e o seu conteúdo.

Requisitos

  • O script deve se chamar list_files.sh.
  • O script deve estar localizado no diretório ~/project.
  • O script deve começar com a shebang #!/bin/bash.
  • O script deve aceitar o caminho de um diretório como seu primeiro argumento de linha de comando.
  • O script deve usar um loop for para iterar pelos arquivos dentro do diretório fornecido.
  • Para cada arquivo comum (regular file) encontrado, o script deve imprimir "File: " seguido pelo nome base do arquivo e, em seguida, imprimir todo o conteúdo do arquivo.
  • Se nenhum argumento de diretório for fornecido, o script deve exibir uma mensagem de uso e encerrar com um código de status diferente de zero.

Exemplo

Suponha que você criou o script list_files.sh em ~/project e deu a ele permissão de execução. Ao executá-lo usando ~/project como argumento, a saída deve ser semelhante a esta:

[labex@host ~]$ cd ~/project
[labex@host project]$ chmod +x list_files.sh
[labex@host project]$ ./list_files.sh ~/project
File: file1.txt
Content of file1.txt

File: file2.txt
Content of file2.txt

File: file3.txt
Content of file3.txt

[labex@host project]$

Se você executar o script sem nenhum argumento, ele deve exibir uma mensagem de instrução de uso:

[labex@host project]$ ./list_files.sh
Usage: ./list_files.sh <directory_path>
[labex@host project]$ echo $?
1
[labex@host project]$

O conteúdo exato dos arquivos dependerá do que você inserir neles.

Dicas

  • Você pode usar a variável especial $1 para acessar o primeiro argumento passado ao seu script.
  • Para iterar pelos arquivos em um diretório, você pode usar um padrão de curinga como "$1"/*.
  • Use uma instrução if com o operador de teste -f (ex: if [ -f "$file" ]) para verificar se um item é um arquivo comum e não um diretório.
  • O comando basename pode ser útil para extrair apenas o nome do arquivo de um caminho completo. Por exemplo, basename /home/labex/project/file1.txt resultaria em file1.txt.
  • O comando cat pode ser usado para exibir o conteúdo de um arquivo.
  • Lembre-se de tornar seu script executável usando chmod +x.
  • Para verificar se uma variável está vazia, você pode usar if [ -z "$variable" ].
  • Para encerrar um script com um código de status específico, use exit <status_code>.
✨ Verificar Solução e Praticar

Resumo

Neste desafio, você aprendeu a criar um script shell simples que utiliza um loop for para iterar por arquivos em um diretório e realizar operações neles. Você praticou a aceitação de argumentos de linha de comando, a validação de entradas e o uso de estruturas condicionais (if) para processar apenas arquivos regulares. Também utilizou o basename para extrair nomes de arquivos e o cat para exibir conteúdos. Essas habilidades são fundamentais para automatizar tarefas, processar dados e gerenciar arquivos de forma eficiente em um ambiente Linux, competências essenciais para a certificação RHCSA e para a administração de sistemas no dia a dia.