[Linux] Bashでの変数の使い方を初心者向けに解説
Bashでの変数は、データを一時的に保存するために使います。
変数を定義する際は、=
の前後にスペースを入れないように注意します。
例えば、name="Taro"
のように定義します。
変数の値を参照する際は、$
を使って$name
のように記述します。
変数は基本的に文字列として扱われますが、数値計算を行う場合は$((式))
を使います。
例えば、result=$((5 + 3))
のように記述します。
- Bashにおける変数の基本的な使い方
- 文字列や数値の操作方法
- 環境変数の定義とエクスポート
- 特殊な変数の活用方法
- 変数を使った実用的な応用例
変数の基本的な使い方
Bashにおける変数は、データを格納するための重要な要素です。
ここでは、変数の基本的な使い方について解説します。
変数の定義方法
変数を定義するには、変数名の後に=
を置き、その後に値を指定します。
スペースは入れないことが重要です。
myVariable="こんにちは"
このコードでは、myVariable
という変数に「こんにちは」という文字列を代入しています。
変数の参照方法
定義した変数の値を参照するには、変数名の前に$
を付けます。
これにより、変数の値を取得できます。
echo $myVariable
こんにちは
変数名のルール
変数名にはいくつかのルールがあります。
以下のポイントに注意してください。
ルール | 説明 |
---|---|
アルファベットで始まる | 変数名は必ずアルファベットから始める必要があります。 |
数字の使用 | 変数名には数字を含めることができますが、最初の文字にはできません。 |
特殊文字の禁止 | 変数名にはアンダースコア(_)以外の特殊文字は使用できません。 |
変数のスコープ(ローカルとグローバル)
変数にはスコープがあり、ローカル変数とグローバル変数に分けられます。
- ローカル変数: 関数内で定義され、その関数内でのみ有効です。
- グローバル変数: スクリプト全体で有効で、どこからでも参照できます。
function myFunction {
local localVar="ローカル変数"
echo $localVar
}
myFunction
echo $localVar # これは何も表示されません
ローカル変数
変数の削除方法
変数を削除するには、unset
コマンドを使用します。
これにより、変数はメモリから削除され、以降は参照できなくなります。
unset myVariable
echo $myVariable # 何も出力されません
(空白)
これで、Bashにおける変数の基本的な使い方についての解説は終了です。
次のセクションでは、文字列変数の操作について詳しく見ていきます。
文字列変数の操作
Bashでは、文字列を扱うためのさまざまな操作が可能です。
ここでは、文字列変数に関する基本的な操作について解説します。
文字列の代入と参照
文字列を変数に代入する方法は、基本的な変数の定義と同様です。
変数に代入した文字列は、$
を使って参照できます。
greeting="こんにちは、世界!"
echo $greeting
こんにちは、世界!
文字列の結合
複数の文字列を結合するには、単にスペースを空けて変数を並べるだけです。
firstName="太郎"
lastName="山田"
fullName="$lastName $firstName"
echo $fullName
山田 太郎
文字列の部分抽出
文字列の一部を抽出するには、substring
の形式を使用します。
${変数名:開始位置:長さ}
という構文を使います。
text="Bashスクリプトの学習"
substring=${text:4:5}
echo $substring
スクリプト
文字列の長さを取得する方法
文字列の長さを取得するには、${#変数名}
という構文を使用します。
これにより、文字列の文字数を取得できます。
text="こんにちは"
length=${#text}
echo $length
5
変数のデフォルト値を設定する方法
変数にデフォルト値を設定するには、:-
を使用します。
変数が未定義または空の場合にデフォルト値を使用します。
unset myVar
echo ${myVar:-"デフォルト値"}
デフォルト値
これで、Bashにおける文字列変数の操作についての解説は終了です。
次のセクションでは、数値変数の操作について詳しく見ていきます。
数値変数の操作
Bashでは、数値を扱うためのさまざまな操作が可能です。
ここでは、数値変数に関する基本的な操作について解説します。
数値の代入と参照
数値を変数に代入する方法は、文字列と同様です。
数値を代入した変数は、$
を使って参照できます。
number=10
echo $number
10
算術演算の基本
Bashでは、算術演算を行うために$(( ))
構文を使用します。
この構文内で、加算、減算、乗算、除算が可能です。
a=5
b=3
result=$((a + b))
echo $result
8
算術演算の応用(加減乗除、剰余)
基本的な算術演算に加えて、剰余演算も行えます。
以下の演算が可能です。
演算子 | 説明 | 例 |
---|---|---|
+ | 加算 | result=$((a + b)) |
- | 減算 | result=$((a - b)) |
* | 乗算 | result=$((a * b)) |
/ | 除算 | result=$((a / b)) |
% | 剰余 | result=$((a % b)) |
a=10
b=3
sum=$((a + b))
difference=$((a - b))
product=$((a * b))
quotient=$((a / b))
remainder=$((a % b))
echo "合計: $sum, 差: $difference, 積: $product, 商: $quotient, 剰余: $remainder"
合計: 13, 差: 7, 積: 30, 商: 3, 剰余: 1
浮動小数点数の扱い方
Bashは整数の算術演算に特化していますが、浮動小数点数を扱うためにはbc
コマンドを使用します。
bc
は任意精度の計算を行うためのツールです。
a=5.5
b=2.2
result=$(echo "$a + $b" | bc)
echo $result
7.7
これで、Bashにおける数値変数の操作についての解説は終了です。
次のセクションでは、環境変数の扱い方について詳しく見ていきます。
環境変数の扱い方
環境変数は、システム全体やプロセスに影響を与える設定情報を格納するための変数です。
ここでは、環境変数の基本的な扱い方について解説します。
環境変数とは
環境変数は、システムやアプリケーションの動作に影響を与える設定情報を保持するための変数です。
これにより、プログラムは実行環境に関する情報を取得できます。
例えば、ユーザー名やパス、システムの設定などが含まれます。
環境変数の定義と参照
環境変数を定義するには、通常の変数と同様に=
を使いますが、環境変数として使用するためには、エクスポートする必要があります。
参照する際は、$
を付けて変数名を指定します。
MY_ENV_VAR="環境変数の例"
echo $MY_ENV_VAR
環境変数の例
環境変数のエクスポート方法
環境変数をエクスポートするには、export
コマンドを使用します。
これにより、定義した変数が子プロセスでも利用可能になります。
export MY_ENV_VAR="エクスポートされた環境変数"
echo $MY_ENV_VAR
エクスポートされた環境変数
環境変数の削除方法
環境変数を削除するには、unset
コマンドを使用します。
これにより、環境変数はメモリから削除され、以降は参照できなくなります。
unset MY_ENV_VAR
echo $MY_ENV_VAR # 何も出力されません
(空白)
よく使われる環境変数の例
以下は、よく使われる環境変数の例です。
環境変数名 | 説明 |
---|---|
HOME | ユーザーのホームディレクトリのパス |
USER | 現在のユーザー名 |
PATH | 実行可能ファイルの検索パス |
SHELL | 現在のシェルのパス |
PWD | 現在の作業ディレクトリのパス |
これで、Bashにおける環境変数の扱い方についての解説は終了です。
次のセクションでは、特殊な変数の使い方について詳しく見ていきます。
特殊な変数の使い方
Bashには、特定の目的で使用される特殊な変数があります。
これらの変数を理解することで、スクリプトの柔軟性と機能性を向上させることができます。
ここでは、特殊な変数の使い方について解説します。
位置パラメータ変数($1, $2, …)
位置パラメータ変数は、スクリプトや関数に渡された引数を参照するための変数です。
$1
は最初の引数、$2
は2番目の引数、というように続きます。
引数がない場合は空になります。
#!/bin/bash
echo "最初の引数: $1"
echo "二番目の引数: $2"
./script.sh Hello World
最初の引数: Hello
二番目の引数: World
特殊変数($?, $$, $!, $@, $*)
Bashには、特定の情報を取得するための特殊変数があります。
以下にその説明を示します。
特殊変数 | 説明 |
---|---|
$? | 最後に実行したコマンドの終了ステータス |
$$ | 現在のシェルのプロセスID |
$! | 最後に実行したバックグラウンドプロセスのプロセスID |
$@ | すべての引数を個別の引数として参照 |
$* | すべての引数を1つの文字列として参照 |
echo "終了ステータス: $?"
echo "プロセスID: $$"
終了ステータス: 0
プロセスID: 12345
配列変数の定義と参照
Bashでは、配列変数を使用して複数の値を格納できます。
配列は、()
を使って定義します。
要素を参照するには、${配列名[インデックス]}
を使用します。
fruits=("りんご" "バナナ" "オレンジ")
echo ${fruits[1]} # バナナを出力
バナナ
配列の要素数を取得する方法
配列の要素数を取得するには、${#配列名[@]}
を使用します。
これにより、配列に格納されている要素の数を取得できます。
echo "配列の要素数: ${#fruits[@]}"
配列の要素数: 3
連想配列の定義と参照
Bash 4.0以降では、連想配列を使用することができます。
連想配列は、キーと値のペアでデータを格納します。
declare -A
を使って定義します。
declare -A colors
colors=(["赤"]="#FF0000" ["緑"]="#00FF00" ["青"]="#0000FF")
echo "赤のカラーコード: ${colors[赤]}"
赤のカラーコード: #FF0000
これで、Bashにおける特殊な変数の使い方についての解説は終了です。
次のセクションでは、変数の応用例について詳しく見ていきます。
変数の応用例
Bashにおける変数は、さまざまな場面で活用できます。
ここでは、変数を使った具体的な応用例について解説します。
変数を使った条件分岐
変数を使って条件分岐を行うことができます。
if
文を使用して、変数の値に基づいて異なる処理を実行します。
age=20
if [ $age -ge 18 ]; then
echo "成人です。"
else
echo "未成年です。"
fi
成人です。
変数を使ったループ処理
変数を使ってループ処理を行うことも可能です。
for
文やwhile
文を使用して、変数の値に基づいて繰り返し処理を実行します。
for i in {1..5}; do
echo "カウント: $i"
done
カウント: 1
カウント: 2
カウント: 3
カウント: 4
カウント: 5
変数を使ったファイル操作
変数を使ってファイル名を指定し、ファイル操作を行うことができます。
これにより、動的にファイルを扱うことが可能です。
filename="example.txt"
echo "これはサンプルファイルです。" > $filename
cat $filename
これはサンプルファイルです。
変数を使ったコマンドの実行結果の保存
コマンドの実行結果を変数に保存することができます。
これにより、後でその結果を利用することが可能です。
currentDate=$(date)
echo "現在の日付: $currentDate"
現在の日付: Mon Oct 23 12:34:56 JST 2023
変数を使ったスクリプトの引数処理
スクリプトに引数を渡し、それを変数として扱うことができます。
これにより、スクリプトの柔軟性が向上します。
#!/bin/bash
name=$1
echo "こんにちは、$nameさん!"
./script.sh 太郎
こんにちは、太郎さん!
これで、Bashにおける変数の応用例についての解説は終了です。
次のセクションでは、よくある質問にお答えします。
よくある質問
まとめ
この記事では、Bashにおける変数の基本的な使い方から応用例までを詳しく解説しました。
変数の定義や参照、文字列や数値の操作、環境変数や特殊な変数の使い方、さらには条件分岐やループ処理における変数の活用方法についても触れました。
これらの知識を活かして、Bashスクリプトをより効果的に作成し、実行することができるでしょう。
ぜひ、実際にスクリプトを作成してみて、変数の使い方を実践してみてください。