シェルスクリプトで使う変数・演算・文字列処理について解説

シェルスクリプトでは、プログラムの中でデータを扱うために 変数演算文字列操作 が不可欠です。
ここでは、初心者でも理解できるように具体例を交えて解説します。


目次

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$(( )), exprbc, awkPOSIX準拠、軽量
ksh / zsh$(( )), let, (( ))bc, awkBashに近い
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) で結果を変数に代入

💡 ポイント

  • 文字列と数値は型を意識せず扱えるが、計算時は必ず数値で扱う
  • コマンド置換と文字列操作を組み合わせると、自動化スクリプトが強力になる
  • 部分文字列や置換はログ処理・ファイル操作・データ抽出で頻出
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次