コンテンツにスキップ

シェルスクリプト

出典: フリー教科書『ウィキブックス(Wikibooks)』

このチュートリアルでは、POSIX互換シェル(/bin/sh)を使用した基本的なシェルスクリプトの書き方を学びます。

はじめに

[編集]

シェルスクリプトは、コマンドラインタスクを自動化するための強力なツールです。POSIXシェルを使用することで、多くのUNIX系システムで動作するスクリプトを作成できます。

基本的な構文

[編集]

スクリプトの最初の行に以下を記述します:

#!/bin/sh

これはシバン(shebang)と呼ばれ、このスクリプトを実行するインタープリターを指定します。

変数

[編集]

変数の定義と使用:

name="World"
echo "Hello, $name!"

条件分岐

[編集]
if文の使用:
if [ "$1" = "hello" ]; then
    echo "Hello to you too!"
else
    echo "Hi there!"
fi

ループ

[編集]
for ループの例:
for i in 1 2 3 4 5; do
    echo "Number: $i"
done
while ループの例:
count=1
while [ $count -le 5 ]; do
    echo "Count: $count"
    count=$((count + 1))
done

関数

[編集]
関数の定義と呼び出し:
greet() {
    echo "Hello, $1!"
}

greet "Alice"
greet "Bob"

コマンドライン引数

[編集]
スクリプトに渡された引数の使用:
echo "Script name: $0"
echo "First argument: $1"
echo "Second argument: $2"
echo "All arguments: $@"

シグナルの捕捉

[編集]
trapコマンドを使用してシグナルを捕捉します:
cleanup() {
    echo "Cleaning up..."
    # クリーンアップ処理をここに記述
}

trap cleanup INT TERM

echo "Running script..."
sleep 10
echo "Script completed."

この例では、SIGINT(Ctrl+C)とSIGTERM(終了シグナル)を捕捉し、cleanup関数を実行します。

入出力のリダイレクト

[編集]
ファイルからの読み込みと書き込み:
# ファイルへの書き込み
echo "Hello, World!" > output.txt

# ファイルからの読み込み
while IFS= read -r line; do
    echo "Read: $line"
done < input.txt

終了ステータス

[編集]
スクリプトの終了ステータスを設定:
if [ "$1" = "success" ]; then
    exit 0
else
    exit 1
fi

このチュートリアルでは、POSIXシェルスクリプトの基本的な要素をカバーしました。これらの概念を組み合わせることで、様々な自動化タスクを実行できるスクリプトを作成できます。より複雑な処理が必要な場合は、Rubyなどの高級言語の使用を検討してください。ビルド手順の適正化には make などのビルドシステムの使用も検討してください。