第15回 文字列操作の基本を学ぼう:連結・長さ確認・${変数}の使い方 | はじめてのシェルスクリプト

* 当サイトでは、コンテンツの一部に広告を掲載しています。

System Note $ cat /proc/ai-disclosure

本記事の構成および論理分析には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.txt

3. 文字列を変えて試す

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 を使って、ファイルやディレクトリの有無を確認する方法を学びます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

のいのアバター のい UNIX Cafe マスター

Macintosh Color Classicから始まった旅は、長いWindows時代を経て、Windows10のサポート終了をきっかけにUNIXの世界へ戻ってきました。UNIX Cafeでは、UNIX・Linux・そしてMacな世界を、むずかしい言葉を使わず、物語のように書いています。プログラミングは、アイデアをコンピューターに伝えるための言葉です。簡単な単語と文法を覚えれば、誰でもコマンドを使えます。ぜひ一度、やさしいプログラミングの世界をのぞいてみてください。

Created by UNIX Cafe

目次