シェルスクリプト
このチュートリアルでは、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 などのビルドシステムの使用も検討してください。