Bash文字列結合入門 # Bash String Concatenation Basics
Bash では、複数の文字列を結合して一つの文字列にすることを文字列結合と呼びます。これはスクリプトを書く際に頻繁に使用する操作です。
基本的な方法
最も簡単な方法は、文字列を単純に並べることです。
str1="こんにちは"
str2="世界"
greeting="$str1$str2"
echo "$greeting" # 出力: こんにちは世界
- += 演算子: 既存の文字列に別の文字列を追加できます。
str="こんにちは" str+=" 世界" echo "$str" # 出力: こんにちは 世界
- printf コマンド: より複雑なフォーマッティングを行うことができます。
str1="こんにちは" str2="世界" printf "%s%s\n" "$str1" "$str2" # 出力: こんにちは世界
- 変数展開時のブレース: 変数名が他の文字と紛らわしい場合に明確化できます。
var1="hello" var2="world" str="${var1}${var2}" echo "$str" # 出力: helloworld
重要なポイント
- 文字列を直接並べるときは、空白や他の文字も結合されます。
+=
演算子は既存の文字列を変更するため、注意が必要です。printf
コマンドはフォーマット指定子を使って出力形式を制御できます。
例題
# ファイル名と拡張子の結合
filename="ドキュメント"
extension=".txt"
full_path="$filename$extension"
echo "$full_path" # 出力: ドキュメント.txt
備考
- Bash の文字列操作には他にも多くの方法がありますが、基本的な結合はこのような方法で行われます。
- 文字列の操作には、文字列の長さ取得、部分文字列抽出、置換などの機能もあります。
例1: 基本的な結合
#!/bin/bash
str1="こんにちは"
str2="世界"
result="$str1$str2"
echo "$result" # 出力: こんにちは世界
#!/bin/bash
: このスクリプトが Bash シェルで実行されることを指定します。str1="こんにちは"
とstr2="世界"
: 2 つの文字列変数を定義します。result="$str1$str2"
:str1
とstr2
を連結し、結果をresult
変数に代入します。echo "$result"
: 連結された文字列を出力します。
例2: ブレースを使用した結合
#!/bin/bash
part1="Hello"
part2=" Bash"
full_string="${part1}${part2}"
echo "Concatenated String: $full_string" # 出力: Concatenated String: Hello Bash
- ブレース
{}
を使用することで、変数名を明確にし、他の文字との混同を防ぎます。
解説
- Bash での文字列結合は、複数の文字列を組み合わせる操作です。
- 基本的には、文字列を直接並べることで結合できます。
- ブレースを使用すると、変数名の明確化や複雑な状況での結合が可能になります。
echo
コマンドを使って、連結された結果を出力することができます。
printf コマンドによる結合
printf
コマンドは、フォーマット指定子を使って文字列を整形出力する際に便利です。
#!/bin/bash
str1="こんにちは"
str2="世界"
printf "%s%s\n" "$str1" "$str2" # 出力: こんにちは世界
%s
は文字列のフォーマット指定子です。\n
は改行文字です。
+= 演算子による結合
既存の文字列に別の文字列を追加できます。
#!/bin/bash
str="こんにちは"
str+=" 世界"
echo "$str" # 出力: こんにちは 世界
- 注意点:
+=
演算子はstr
変数の値を変更します。
echo -n オプションによる結合
echo
コマンドの -n
オプションを使うと、改行を出力しません。
#!/bin/bash
str1="こんにちは"
str2="世界"
echo -n "$str1"
echo "$str2" # 出力: こんにちは世界
- 複数の
echo
コマンドを使うことで、文字列を連結できます。
mapfile コマンドによる結合 (配列経由)
配列を使って結合するやや複雑な方法です。
#!/bin/bash
mapfile -t str_array <<< "こんにちは 世界"
combined_str="${str_array[*]}"
echo "$combined_str" # 出力: こんにちは 世界
mapfile
コマンドで文字列を配列に変換します。[*]
を使うことで配列の全要素を結合します。
paste コマンドによる結合 (ファイル経由)
ファイルを使って結合する別の方法です。
#!/bin/bash
echo "こんにちは" > file1
echo "世界" > file2
paste -s file1 file2 # 出力: こんにちは 世界
> file1
と> file2
でファイルを生成します。paste -s
でファイルを結合します。
bash shell syntax