シェルスクリプティングチュートリアル:拡張シェルスクリプト

拡張シェルスクリプトの紹介

こんにちは、志を抱くプログラマーさんたち!ユニックス/リナックスのシェルスクリプティングのエキサイティングな世界を案内するのがとても楽しみです。コンピュータサイエンスの教師として多年間の経験を積んでおり、多くの生徒がこれらの概念を理解したときに目を輝かせるのを見てきました。今日は、拡張シェルスクリプトに踏み込み、基本を基により強力で柔軟なプログラムを作成します。新しいことについて不安に思わないでください - まずは基礎から一緒に進めていきましょう!

Unix / Linux - Shell Scripting

拡張シェルスクリプトとは?

拡張シェルスクリプトはユニックス/リナックスの世界におけるスイスアーミーナイフのようなものです。シェルの内蔵コマンドと構造を使って、より複雑で機能豊かなプログラムを作成できるようにします。これを問題を解決するためのレシピとして考えてください!

拡張シェルスクリプトの基本構造

まずはスクリプトの骨組みから始めましょう:

#!/bin/bash

# ここにコードを記述します

exit 0

これはシンプルに見えるかもしれませんが、私たちが書くすべてのスクリプトの基盤です。#!/bin/bashはシェバングと呼ばれ、システムにどのインタプリタを使用するかを伝えます。最後のexit 0は、スクリプトが無事に終了したことをコンピュータに伝えるものです。

変数とデータ型

シェルスクリプティングでは、変数は情報を保存する箱のようなものです。使い方を見てみましょう:

#!/bin/bash

name="Alice"
age=25
pi=3.14

echo "Hello, $name! You are $age years old."
echo "Pi is approximately $pi"

exit 0

このスクリプトを実行すると、以下の出力が表示されます:

Hello, Alice! You are 25 years old.
Pi is approximately 3.14

$を使って変数を参照することに注意してください。これはコンピュータに「この箱の中のものを取ってきてくれ」と言うのと同じです!

制御構造

If-Else 文

さあ、少し賢いスクリプトを作成するために、決定を行ってみましょう:

#!/bin/bash

age=18

if [ $age -ge 18 ]; then
echo "You can vote!"
else
echo "Sorry, you're too young to vote."
fi

exit 0

このスクリプトは年齢が18歳以上かどうかをチェックします。それがtrueの場合は、投票できると伝えます。それ以外の場合は、まだ若すぎると言います。-geはシェルの言語では「以上」を意味します。

ループ

ループはコードのメリーゴーランドです。forループを見てみましょう:

#!/bin/bash

for i in {1..5}
do
echo "Round $i"
done

exit 0

これは1から5まで数えます。まるでスクリプトがトレーニング指導者のように、「回」を数えているかのようです!

関数

関数はスクリプト内のミニスクリプトのようなものです。再利用可能なコードブロックです:

#!/bin/bash

greet() {
echo "Hello, $1! Nice to meet you."
}

greet "Bob"
greet "Alice"

exit 0

このスクリプトはgreet関数を定義し、指定された人に挨拶をします。$1は関数に渡された最初の引数を保持します。

入力と出力

スクリプトを対話的にしてみましょう:

#!/bin/bash

echo "What's your name?"
read name

echo "Hello, $name! How old are you?"
read age

if [ $age -ge 18 ]; then
echo "You can vote, $name!"
else
echo "Sorry $name, you're too young to vote."
fi

exit 0

このスクリプトはあなたの名前と年齢を尋ね、それに基づいて投票できるかどうかを判断します。まるで親切な選挙管理官のようです!

ファイル操作

シェルスクリプトはファイル管理に最適です。ファイルをバックアップするスクリプトを作成してみましょう:

#!/bin/bash

original_file="important_data.txt"
backup_file="important_data_backup.txt"

if [ -f "$original_file" ]; then
cp "$original_file" "$backup_file"
echo "Backup created successfully!"
else
echo "Error: $original_file not found."
fi

exit 0

このスクリプトはimportant_data.txtが存在するかどうかをチェックし、存在する場合はバックアップを作成します。まるで個人的なファイルアシスタントのようです!

エラーハンドリング

スクリプトをより強固にするために、エラーハンドリングを追加してみましょう:

#!/bin/bash

divide() {
if [ $2 -eq 0 ]; then
echo "Error: Cannot divide by zero!"
return 1
fi
result=$(($1 / $2))
echo "Result: $result"
return 0
}

divide 10 2
divide 10 0

exit 0

このスクリプトはdivide関数を定義し、0除算をチェックします。まるで数学の先生があなたの間違いを指摘するかのようです!

コマンドライン引数

最後に、コマンドライン引数を使用するスクリプトを作成しましょう:

#!/bin/bash

if [ $# -eq 0 ]; then
echo "Usage: $0 <name>"
exit 1
fi

echo "Hello, $1! Welcome to shell scripting."

exit 0

このスクリプトを./script.sh Aliceのように実行すると、Aliceに挨拶します。$#は引数の数をチェックし、$0はスクリプト名そのものです。

結論

おめでとうございます!あなたは拡張シェルスクリプトの世界への第一歩を踏み出しました。心に留めておいてください、練習は完璧を生みます。これらの概念を組み合わせて、自分のアイデアで実験してみてください。間もなくプロのようにスクリプトを書けるようになるでしょう!

以下に、私たちがカバーした主要な概念のまとめ表を示します:

概念 説明
変数 データを保存して取り出す name="Alice"
If-Else 決定を行う if [ $age -ge 18 ]; then ... fi
ループ 行動を繰り返す for i in {1..5}; do ... done
関数 再利用可能なコードブロック greet() { ... }
入力/出力 ユーザーと対話する read name
ファイル操作 ファイルを管理する cp "$original_file" "$backup_file"
エラーハンドリング 潜在的な問題を管理する if [ $2 -eq 0 ]; then ... fi
コマンドライン引数 スクリプトパラメータを使用する $1, $2, $#

引き続きスクリプトを書き続け、学び続けてください。そして、最も重要なのは、楽しむことです!シェルスクリプティングの世界は広大でエキサイティングであり、あなたはまだ旅の始まりです。ハッピーコーディング!

Credits: Image by storyset