シェルスクリプトでは、プログラムの中でデータを扱うために 変数、演算、文字列操作 が不可欠です。
ここでは、初心者でも理解できるように具体例を交えて解説します。
目次
1. 変数の基本
1-1. 変数の定義
変数は 変数名=値 の形式で定義します。
注意: = の前後にスペースを入れないこと!
#!/bin/bash
name="Alice"
age=25
nameには文字列"Alice"が入りますageには数値25が入ります
1-2. 変数の参照
変数を使うときは $ を付けます。
echo "名前は $name です"
echo "年齢は $age 歳です"
出力:
名前は Alice です
年齢は 25 歳です
1-3. ダブルクオートとシングルクオートの違い
- ダブルクオート
" ":変数展開される - シングルクオート
' ':文字列そのまま
echo "こんにちは $name"
echo 'こんにちは $name'
出力:
こんにちは Alice
こんにちは $name
2. 数値演算
シェルスクリプトでは $(( )) を使って計算できます。
a=10
b=3
echo $((a + b)) # 足し算 → 13
echo $((a - b)) # 引き算 → 7
echo $((a * b)) # 掛け算 → 30
echo $((a / b)) # 割り算 → 3
echo $((a % b)) # 余り → 1
| シェル | 整数演算 | 小数演算 | コメント |
|---|---|---|---|
| sh / dash | $(( )), expr | bc, awk | POSIX準拠、軽量 |
| ksh / zsh | $(( )), let, (( )) | bc, awk | Bashに近い |
| Bash | $(( )), let, (( )) | bc, awk | 最も柔軟、デバッグ機能も豊富 |
2-1. 変数を使った計算例
x=5
y=2
z=$((x * y + 3))
echo $z
出力:
13
2-2.インクリメント / デクリメント
#!/bin/bash
count=1
count=$((count + 1)) # インクリメント
echo $count # 出力 → 2
count=$((count – 1)) # デクリメント
echo $count # 出力 → 1
bash 4.x 以上では短縮形も可能:
((count++)) # インクリメント
((count–)) # デクリメント
3. 文字列操作
文字列を扱う基本テクニックをまとめます。
3-1. 文字列の連結
first="Hello"
last="World"
full="$first $last"
echo $full
出力:
Hello World
4. コマンド置換
コマンド置換 とは、シェルでコマンドを実行し、その 標準出力結果を変数や他のコマンドに置き換える機能 です。
4-1.書き方の基本
2種類 の書き方があります。
| 書き方 | 特徴 | 備考 |
|---|---|---|
`command` | 古典的、すべてのシェルで使用可能 | ネスト時は “` をエスケープ |
$(command) | 現代的、ネスト可能、可読性高 | Bash / ksh / zsh / dash で使用可能 |
4-2.コマンド置換の使用例
now=$(date +%Y-%m-%d)
echo "今日の日付は $now です"
出力例:
今日の日付は 2025-11-23 です
他にも、例えばファイル数を変数に入れることもできます。
files=$(ls /tmp | wc -l)
echo "/tmp のファイル数は $files です"
出力例:
/tmp のファイル数は 11 です
まとめ
シェルスクリプトでの 変数・演算・文字列処理 は以下のように整理できます:
| カテゴリ | ポイント |
|---|---|
| 変数 | VAR=value、参照は $VAR、ダブルクオートで展開 |
| 数値演算 | $(( )) で加減乗除、余り、複雑計算 |
| 文字列操作 | 連結、部分抽出、長さ、置換、前後削除 |
| コマンド置換 | var=$(command) で結果を変数に代入 |
💡 ポイント
- 文字列と数値は型を意識せず扱えるが、計算時は必ず数値で扱う
- コマンド置換と文字列操作を組み合わせると、自動化スクリプトが強力になる
- 部分文字列や置換はログ処理・ファイル操作・データ抽出で頻出

コメント