本記事の構成および論理分析にはAI(人工知能)を使用しています。情報の正確性は、システム管理者(UNIXユーザー)による手動検証済みです。
第15回 文字列操作の基本を学ぼう:連結・長さ確認・${変数}の使い方 | はじめてのシェルスクリプト

はじめてのシェルスクリプト | 第15回
はじめに
この連載では、macOS のターミナルで sh を使いながら、シェルスクリプトの基本を順番に学んでいきます。
前回(第14回)では、$(( )) を使った数値の計算方法を学びました。カウンタや繰り返し回数の管理に使える、実用的な仕組みでしたね。
シェルスクリプトで扱うデータの多くは「文字列」です。ファイル名・パス・メッセージ・コマンドの出力など、あらゆる場面で文字列が登場します。これらを柔軟に操作できるようになると、スクリプトの表現力が格段に上がります。
第15回では、文字列の連結・長さの確認・変数展開の使い方など、文字列操作の基本を学びます。${変数} の書き方を使う場面を正しく理解しておくことで、意図した通りに動くスクリプトが書けるようになります。
この回で学ぶこと
- 文字列の連結
- 変数展開の基本
${#var}で長さを確認する方法${var}の形を使う場面- 文字列処理でクォートが重要な理由
- 文字列を組み合わせる方法
- 初学者がつまずきやすい書き方
文字列を連結する
文字列をそのまま並べる
シェルでは、文字列や変数を並べることで文字列を連結できます。
たとえば、次のように書きます。
first="Shell"
second="Script"
echo "$first $second"この場合、Shell Script と表示されます。
変数展開を使う
文字列の中に変数を入れるときは、変数展開を使います。
name="Taro"
echo "Hello, $name"文字列の長さを確認する
文字列の長さは ${#var} で確認できます。
text="apple"
echo "${#text}"実行結果は次のようになります。
5${var} を使って区切りを明確にする
変数名の直後に文字を続けたいときは、${var} の形を使うと分かりやすく書けます。
name="report"
echo "${name}.txt"この例では、report.txt と表示されます。
サンプルコード
string_sample.sh に次の内容を保存します。
#!/bin/sh
first="Shell"
second="Script"
name="report"
text="banana"
echo "$first $second"
echo "Length: ${#text}"
echo "File: ${name}.txt"実行手順
1. ファイルを作成して保存する
エディタで string_sample.sh という名前のファイルを作成し、次の内容を保存します。
#!/bin/sh
first="Shell"
second="Script"
name="report"
text="banana"
echo "$first $second"
echo "Length: ${#text}"
echo "File: ${name}.txt"2. スクリプトを実行する
次のコマンドを実行します。
sh string_sample.sh実行結果は次のようになります。
Shell Script
Length: 6
File: report.txt3. 文字列を変えて試す
name="memo" や text="orange" などに変更して、表示結果がどう変わるか確認してください。
コードの読み方
echo "$first $second"
2つの変数を連結して表示しています。
空白も文字列として一緒に入れています。
${#text}
これは、text に入っている文字列の長さを表します。
${name}.txt
これは、変数 name の値の後ろに .txt を続けています。
${ } を使うことで、どこまでが変数名かが分かりやすくなります。
文字列処理ではクォートが重要
文字列に空白が入る場合や、意図した形で表示したい場合は、ダブルクォートを使うことが重要です。
title="Shell Script Lesson"
echo "$title"クォートを付けることで、空白を含む文字列も1つのまとまりとして扱えます。
初学者がつまずきやすい点
文字列の長さの書き方を忘れる
長さは ${#text} の形で確認します。
$#text ではありません。
変数名の区切りが曖昧になる
変数名の直後に文字を続けるときは ${name}.txt のように書くと分かりやすくなります。
$name.txt でも意図どおり動く場面はありますが、まずは ${ } を付ける形に慣れるのが安全です。
クォートを外してしまう
文字列の連結や表示では、ダブルクォートを付けておくと安全です。
よくあるエラー
思った長さにならない
文字列の内容を見直してください。
空白を含む場合も文字数に含まれます。
変数名のつながり方が分かりにくい
${name}.txt のように波かっこを使っているか確認してください。
まずは、変数名の境界をはっきり書くことを意識してください。
文字列が途中で区切られる
クォートを付けているか確認してください。
空白を含む文字列では特に重要です。
練習用コード
次の内容で string_practice.sh を作成して実行してみてください。
#!/bin/sh
name="Yamada Taro"
city="Tokyo"
file_base="profile"
echo "Name: $name"
echo "City: $city"
echo "Length of city: ${#city}"
echo "Output file: ${file_base}.txt"
echo "$name lives in $city"文字列の内容を変えて、表示結果がどう変わるか確認してください。
この回で理解しておくこと
- 文字列は変数を並べて連結できる
- 変数展開で文字列の中に値を入れられる
${#var}で文字列の長さを確認できる${var}を使うと変数名の境界を明確にできる- 文字列処理ではダブルクォートが重要である
- 空白を含む文字列では特にクォートに注意が必要である
まとめ
今回は、文字列の連結、長さの確認、${var} の使い方など、文字列操作の基本を確認しました。
文字列を正しく扱えるようになると、表示メッセージやファイル名の組み立てを書きやすくなります。
次回は、ファイルとディレクトリを判定する方法を学びます。
次回予告
次回は「ファイルとディレクトリを判定しよう」です。
-f -d -e を使って、ファイルやディレクトリの有無を確認する方法を学びます。









