반복문을 활용한 셸 스크립트 작성

Red Hat Enterprise LinuxBeginner
지금 연습하기

소개

이 챌린지에서는 forwhile과 같은 반복문 구조를 사용하여 파일이나 명령줄 입력을 처리하는 간단한 셸 스크립트를 작성하는 방법을 배웁니다. 셸 스크립팅은 반복적인 작업을 자동화하고 업무 흐름을 간소화하는 강력한 도구입니다. 이 챌린지를 완료하면 동적인 입력을 처리하고 다양한 작업을 수행할 수 있는 셸 스크립트 개발에 대한 실무 경험을 쌓게 될 것입니다.

for 루프를 사용한 셸 스크립트 작성

이 단계에서는 for 루프를 사용하여 특정 디렉터리의 파일 목록을 순회하고 각 파일에 대해 작업을 수행하는 셸 스크립트를 작성합니다. 이 스크립트는 셸 스크립팅에서 흔히 발생하는 작업인 여러 파일을 동적으로 처리하는 방법을 보여줍니다.

과제

  • for 루프를 사용하여 지정된 디렉터리 내의 파일 목록을 순회하는 셸 스크립트를 작성하세요.
  • 발견된 각 파일에 대해 스크립트는 파일 이름과 해당 파일의 내용을 출력해야 합니다.

요구 사항

  • 스크립트 파일 이름은 반드시 list_files.sh여야 합니다.
  • 스크립트는 ~/project 디렉터리에 위치해야 합니다.
  • 스크립트는 #!/bin/bash 셰뱅 (shebang) 으로 시작해야 합니다.
  • 스크립트는 첫 번째 명령줄 인자로 디렉터리 경로를 받아야 합니다.
  • 스크립트는 for 루프를 사용하여 제공된 디렉터리 내의 파일들을 순회해야 합니다.
  • 일반 파일 (regular file) 을 만날 때마다 스크립트는 "File: " 뒤에 파일의 기본 이름을 출력하고, 이어서 파일의 전체 내용을 출력해야 합니다.
  • 디렉터리 인자가 제공되지 않은 경우, 스크립트는 사용법 메시지를 출력하고 0 이 아닌 상태 코드로 종료되어야 합니다.

예시

~/project 디렉터리에 list_files.sh 스크립트를 생성하고 실행 권한을 부여했다고 가정해 보겠습니다. ~/project를 인자로 전달하여 실행하면 다음과 유사한 결과가 출력되어야 합니다.

[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]$

인자 없이 스크립트를 실행하면 사용법 메시지가 표시되어야 합니다.

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

파일의 실제 내용은 사용자가 파일에 작성한 내용에 따라 달라집니다.

힌트

  • 스크립트에 전달된 첫 번째 명령줄 인자에 접근하려면 특수 변수 $1을 사용할 수 있습니다.
  • 디렉터리 내의 파일들을 순회하려면 "$1"/*와 같은 와일드카드 패턴을 사용할 수 있습니다.
  • 항목이 디렉터리가 아닌 일반 파일인지 확인하려면 -f 테스트 연산자가 포함된 if 문 (예: if [ -f "$file" ]) 을 사용하세요.
  • basename 명령어를 사용하면 전체 경로에서 파일 이름만 추출할 수 있습니다. 예를 들어 basename /home/labex/project/file1.txtfile1.txt를 출력합니다.
  • 파일의 내용을 표시하려면 cat 명령어를 사용할 수 있습니다.
  • chmod +x를 사용하여 스크립트에 실행 권한을 부여하는 것을 잊지 마세요.
  • 변수가 비어 있는지 확인하려면 if [ -z "$variable" ]를 사용할 수 있습니다.
  • 특정 상태 코드로 스크립트를 종료하려면 exit <status_code>를 사용하세요.
✨ 솔루션 확인 및 연습

요약

이 챌린지에서는 for 루프를 사용하여 디렉터리 내의 파일을 순회하고 작업을 수행하는 간단한 셸 스크립트를 작성하는 방법을 배웠습니다. 명령줄 인자를 받아들이고, 입력값을 검증하며, 조건문 (if) 을 사용하여 일반 파일만 처리하는 실습을 진행했습니다. 또한 파일 이름을 추출하기 위한 basename과 파일 내용을 표시하기 위한 cat 명령어를 활용했습니다. 이러한 기술은 리눅스 환경에서 작업을 자동화하고 데이터를 처리하며 파일을 효율적으로 관리하는 데 필수적이며, RHCSA 자격증 취득 및 일상적인 시스템 관리 업무의 기초가 됩니다.