はじめに
このチャレンジでは、for や while などのループ構造(繰り返し処理)を使用して、ファイルやコマンドラインからの入力を処理するシンプルなシェルスクリプトの作成方法を学びます。シェルスクリプトは、反復的なタスクを自動化し、ワークフローを効率化するための強力なツールです。このチャレンジを完了することで、動的な入力を処理し、さまざまな操作を実行できるシェルスクリプト開発の実践的な経験を積むことができます。
このチャレンジでは、for や while などのループ構造(繰り返し処理)を使用して、ファイルやコマンドラインからの入力を処理するシンプルなシェルスクリプトの作成方法を学びます。シェルスクリプトは、反復的なタスクを自動化し、ワークフローを効率化するための強力なツールです。このチャレンジを完了することで、動的な入力を処理し、さまざまな操作を実行できるシェルスクリプト開発の実践的な経験を積むことができます。
for ループを使用したシェルスクリプトの作成このステップでは、for ループを使用してディレクトリ内のファイルリストを反復処理し、各ファイルに対して操作を実行するシェルスクリプトを作成します。このスクリプトを通じて、シェルスクリプトでよく行われるタスクである「複数のファイルを動的に処理する方法」を理解します。
for ループで巡回するシェルスクリプトを作成してください。list_files.sh としてください。~/project ディレクトリに配置してください。#!/bin/bash シバン(Shebang)を記述してください。for ループを使用してください。~/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"/* のようなワイルドカードパターンを使用できます。if 文と -f テスト演算子(例:if [ -f "$file" ])を使用します。basename コマンドが便利です。例えば、basename /home/labex/project/file1.txt は file1.txt を出力します。cat コマンドを使用できます。chmod +x を使用してスクリプトを実行可能にするのを忘れないでください。if [ -z "$variable" ] を使用できます。exit <status_code> を使用します。このチャレンジでは、for ループを使用してディレクトリ内のファイルを反復処理し、それらに対して操作を実行するシンプルなシェルスクリプトの作成方法を学びました。コマンドライン引数の受け取り、入力のバリデーション、および条件文(if)を使用して通常のファイルのみを処理する実習を行いました。また、ファイル名を抽出するための basename や、ファイル内容を表示するための cat も使用しました。これらのスキルは、Linux 環境におけるタスクの自動化、データ処理、効率的なファイル管理の基礎であり、RHCSA 認定試験や日常のシステム管理業務において不可欠なものです。