星間貨物目録(カーゴ・マニフェスト)

ShellBeginner
オンラインで実践に進む

はじめに

スペースキャデットの皆さん、ようこそ!あなたは今、恒星間輸送船「ネブラ・ノマド号」の貨物担当官になるための訓練を受けています。最初の任務は、船内にある 3 つの貨物室(ベイ)の簡易在庫管理システムを作成することです。シェルの配列(Array)を使用して在庫データを保持し、コマンドライン引数を受け取って特定の貨物室の内容を表示するプログラムを構築します。

貨物目録スクリプトの作成

タスク

  1. /home/labex/project ディレクトリにある既存のシェルスクリプト cargo_manifest.sh を開きます。
  2. スクリプトの欠けている部分を補完し、宇宙船の貨物在庫を作成・表示する機能を完成させてください。
  3. 異なる引数を指定してスクリプトを実行し、各貨物室の在庫が正しく表示されるか確認します。

要件

  1. /home/labex/project ディレクトリには、コードの枠組みが記述された cargo_manifest.sh が既に用意されています。
  2. 以下の手順でスクリプトを完成させてください:
    • forward_bay(前方室)、midship_bay(中央室)、aft_bay(後方室)という名前の 3 つの配列を作成します。
    • 各配列には、貨物アイテムを表す 3 つの要素(文字列)を格納してください。
    • $1 変数を使用して、どの貨物室の在庫を表示するかを判定します。
    • echo 文を使用して、要求された貨物室の在庫一覧を表示します。
  3. スクリプトは、"forward"、"midship"、"aft" のいずれか 1 つの引数を受け取るようにします。
  4. 引数が指定されなかった場合、スクリプトは以下のメッセージを表示する必要があります:
    "Please specify a cargo bay: forward, midship, or aft"
  5. 無効な引数が指定された場合、スクリプトは以下のメッセージを表示する必要があります:
    "Invalid cargo bay. Choose forward, midship, or aft."

実行例

スクリプト完成後、実行すると以下のような出力が得られるはずです:

$ ./cargo_manifest.sh forward
Forward Bay Inventory:
1. Space Suits
2. Oxygen Tanks
3. Repair Kits

$ ./cargo_manifest.sh midship
Midship Bay Inventory:
1. Food Supplies
2. Water Containers
3. Medical Equipment

$ ./cargo_manifest.sh aft
Aft Bay Inventory:
1. Spare Parts
2. Fuel Cells
3. Scientific Instruments

$ ./cargo_manifest.sh
Please specify a cargo bay: forward, midship, or aft

$ ./cargo_manifest.sh engine
Invalid cargo bay. Choose forward, midship, or aft.

※テストの失敗を防ぐため、スクリプト内の出力文字列は上記の例と完全に一致させてください。

✨ 解答を確認して練習

まとめ

このチャレンジでは、シェルの配列と基本的なコマンドライン引数の処理を使用して、シンプルな在庫管理システムを作成しました。配列の定義、要素へのアクセス、および if 文を用いた入力処理の実践を行いました。これらの基礎スキルはシェルスクリプトにおいて非常に重要であり、より高度な自動化タスクに取り組む際の土台となります。練習を続けて、本物の星間貨物を管理できるエキスパートを目指しましょう!