このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:コマンド練習15

コマンド練習15

 「コマンド練習15」では、5章の後半で登場したコマンドについて 練習問題を通して学びます。ここで扱うのは シェルスクリプトの作成と実行 に関する基本です。Linux では、複数のコマンドをまとめてスクリプト化し、自動化や効率化を行うことができます。さらに 引数の受け渡し終了ステータスの確認 は、スクリプトを実用的にするために欠かせません。

 ここでは、各要素を 表や図 を用いて解説し、実際に新しいスクリプトファイルを作成して試せる練習を提示します。最後に 「練習+模範解答例」 を掲載します。


コマンド解説

1.シェルスクリプトの作成と実行

テキストファイルにコマンドを記述し、実行権限を付与して実行する。

手順コマンド例
新規ファイル作成nano hello.sh
内容記述#!/bin/bash
echo "Hello, Shell Script!"
実行権限付与chmod +x hello.sh
実行./hello.sh

スクリプトの例

[ hello.sh ]
#!/bin/bash
echo "Hello, Shell Script!"

2.引数を利用したスクリプト

スクリプトに値を渡すと $1, $2 などで参照できる。

記述例実行例
echo "Hello, $1!"./greet.sh Linux → Hello, Linux!

3.終了ステータス

直前に実行したコマンドの成功/失敗を表す。

  • 0 → 成功
  • 0以外 → 失敗
コマンド意味
echo $?直前のコマンドの終了ステータスを表示

スクリプトの例

ls existingfile.txt
echo $?  # => 0

ls notfound.txt
echo $?  # => 2

練習問題 + 模範解答例

問題1

新しいスクリプト hello.sh を作成し、「Hello, Shell Script!」と表示させてください。
模範解答例

[user@rocky9 ~]$ nano hello.sh

# 内容
#!/bin/bash
echo "Hello, Shell Script!"

[user@rocky9 ~]$ chmod +x hello.sh
[user@rocky9 ~]$ ./hello.sh
Hello, Shell Script!

問題2

新しいスクリプト greet.sh を作成し、引数で渡された名前を表示してください。
例:./greet.sh LinuxHello, Linux!
模範解答例

[user@rocky9 ~]$ nano greet.sh

# 内容
#!/bin/bash
echo "Hello, $1!"

[user@rocky9 ~]$ chmod +x greet.sh
[user@rocky9 ~]$ ./greet.sh Linux
Hello, Linux!

問題3

 新しいスクリプト checkfile.sh を作成し、引数で渡されたファイルが存在すれば「File exists」、なければ「File not found」と表示してください。さらに終了ステータスを確認してください。
模範解答例

[user@rocky9 ~]$ nano checkfile.sh

# 内容
#!/bin/bash
if [ -e "$1" ]; then
  echo "File exists"
  exit 0
else
  echo "File not found"
  exit 1
fi

[user@rocky9 ~]$ chmod +x checkfile.sh

# テスト
[user@rocky9 ~]$ touch sample.txt
[user@rocky9 ~]$ ./checkfile.sh sample.txt
File exists
[user@rocky9 ~]$  echo $? 
0
[user@rocky9 ~]$ ./checkfile.sh notfound.txt
File not found
[user@rocky9 ~]$ echo $?

スクリプトの解説

if [ -e "$1" ] は、$1は、スクリプトに渡された 最初の引数です。

-e オプションは「ファイルやディレクトリの存在」を確認する演算子です。

  • 存在する → 真(true)
  • 存在しない → 偽(false)

まとめ

「コマンド練習15」では、5章の後半で登場したコマンドについて 学びました。

  • シェルスクリプトの基本構造 と実行手順
  • 引数 $1, $2 を使った入力処理
  • 終了ステータス $? を活用した処理分岐

これにより、Linux での 自動化・効率化スクリプトの基礎 を実践的に習得できます。