Linuxでdeclareコマンドを使いこなす!Bash変数属性の設定方法を初心者向けに解説
生徒
「先生、Linuxで変数の使い方って、ただ代入するだけじゃないんですか?」
先生
「いい質問です。Bash(バッシュ)では、declareコマンドを使うことで、変数に特別な属性を設定できます。例えば読み取り専用にしたり、整数だけを扱う変数にしたりできます。」
生徒
「属性って何ですか?初心者でも理解できますか?」
先生
「大丈夫です。属性というのは変数の性質のことです。例えば、変数に文字しか入れられないようにしたり、値を変更できないようにすることもできます。一緒に具体例を見ながら覚えましょう。」
Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。
試して理解 Linuxのしくみを見る※ Amazonアソシエイト広告リンク
1. declareコマンドとは?
declareコマンドは、LinuxのBash(バッシュ)やZsh(ゼットシェル)で使える変数の属性を設定するためのコマンドです。単なる代入だけでなく、変数を整数専用にしたり、読み取り専用にしたり、配列として扱ったりできます。
初心者の方にとっては、変数の扱い方を一歩進める便利な方法です。通常の変数宣言はVAR="値"ですが、declareを使うとより安全に変数を管理できます。
2. declareで読み取り専用変数を作る
変数を読み取り専用にすると、後から値を変更できなくなります。これはミス防止に役立ちます。
declare -r MYVAR="初期値"
echo $MYVAR
初期値
MYVAR="変更しようとする"
bash: MYVAR: readonly variable
この例では、-rオプションを使うことで、MYVARを読み取り専用にしています。変更しようとするとエラーが出ます。
3. declareで整数専用の変数を作る
Bashでは、変数を整数専用にすることもできます。整数専用にすると、数値計算が安全に行えます。
declare -i COUNT=10
echo $COUNT
10
COUNT="abc"
echo $COUNT
0
ここでは-iオプションを使い、変数COUNTを整数専用にしています。文字を代入すると自動的に0になります。
4. declareで配列を作る
Bashの配列(読み方はハッシュアレイやアレイ)を作るには、declare -aを使います。複数の値を1つの変数で管理できます。
declare -a FRUITS=("リンゴ" "バナナ" "オレンジ")
echo ${FRUITS[0]}
リンゴ
echo ${FRUITS[@]}
リンゴ バナナ オレンジ
配列を使うと複数のデータをまとめて扱うことができます。ループと組み合わせると便利です。
5. declareで変数の属性を確認する
declareコマンドは、設定した変数の属性を確認することもできます。
declare -p MYVAR
declare -r MYVAR="初期値"
declare -p COUNT
declare -i COUNT="0"
-pオプションを使うと、変数の属性と値が確認できます。読み取り専用か整数専用かなどがわかります。
6. declareで環境変数を設定する
declareはローカル変数だけでなく、環境変数として設定することもできます。
declare -x PATH_VAR="/usr/local/bin"
echo $PATH_VAR
/usr/local/bin
-xオプションを使うと、変数が子プロセスにも引き継がれる環境変数になります。スクリプトで便利です。
7. declareの便利なオプションまとめ
-r:読み取り専用(readonly)-i:整数専用(integer)-a:配列(array)-x:環境変数としてエクスポート-p:変数の属性と値を表示
これらを組み合わせることで、安全でわかりやすいBashスクリプトが書けます。初心者でも少しずつ覚えると便利です。
8. まとめではないけれど重要な注意点
declareコマンドで設定した属性は、BashやZshのセッション内で有効です。別のターミナルを開いた場合や、スクリプトの外では属性が引き継がれないので注意してください。
また、読み取り専用や整数専用にした変数は、意図しない代入ミスを防ぐためにも、スクリプトで積極的に活用することをおすすめします。
LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。
Linux教科書 LPICレベル1 スピードマスター問題集を見る※ Amazonアソシエイト広告リンク
まとめ
今回の記事では、LinuxのBashにおけるdeclareコマンドの基本から応用までを解説しました。declareは単なる変数代入だけでなく、変数に属性を設定することでスクリプトを安全で効率的に管理できる強力なツールです。読み取り専用、整数専用、配列、環境変数の設定方法を具体例とともに学びました。
まず、declare -rを使うことで、変数を読み取り専用にできます。誤って値を変更してしまうミスを防ぐため、スクリプトの安定性が向上します。次にdeclare -iで整数専用変数を作成する方法を学びました。文字列を代入すると自動的に0になるため、数値計算が安全になります。さらにdeclare -aで配列を扱う方法も紹介しました。複数の値を1つの変数で管理でき、ループ処理や条件分岐と組み合わせることでスクリプトの柔軟性が高まります。
また、declare -xを使えば変数を環境変数としてエクスポートでき、子プロセスでも値を利用可能です。declare -pを用いると、設定した属性や値を確認でき、デバッグや変数管理に便利です。これらのオプションを組み合わせることで、より安全で読みやすいBashスクリプトを書くことができます。
注意点として、declareで設定した属性はセッション内のみ有効です。別のターミナルやスクリプト外では引き継がれないため、必要に応じてexportやスクリプト内で再設定する必要があります。特に読み取り専用や整数専用は意図しない変更を防ぐため、スクリプトの信頼性向上に役立ちます。
ここまで学んだことを踏まえ、実際に簡単なサンプルコードを作ってみましょう。以下は、読み取り専用変数、整数専用変数、配列、環境変数の基本的な使用例です。
public class DeclareExample {
public static void main(String[] args) {
// 読み取り専用変数
declare -r MYVAR="初期値";
echo $MYVAR;
// 整数専用変数
declare -i COUNT=10;
echo $COUNT;
COUNT="abc";
echo $COUNT;
// 配列
declare -a FRUITS=("リンゴ" "バナナ" "オレンジ");
echo ${FRUITS[0]};
echo ${FRUITS[@]};
// 環境変数
declare -x PATH_VAR="/usr/local/bin";
echo $PATH_VAR;
}
}
生徒
「先生、今日のdeclareコマンドのまとめを聞いてもいいですか?」
先生
「もちろんです。まずdeclareは変数に特別な属性を付けるためのコマンドで、単なる代入よりも安全にスクリプトを管理できます。」
生徒
「具体的にはどんな属性があるんですか?」
先生
「読み取り専用の-r、整数専用の-i、配列の-a、環境変数用の-x、属性確認用の-pがあります。組み合わせるとさらに便利です。」
生徒
「なるほど、属性を使うとエラーを防げるんですね。」
先生
「その通りです。特に読み取り専用や整数専用は、誤った代入を防ぎスクリプトの安全性を高めます。配列は複数データの管理に便利で、環境変数は子プロセスでも利用可能です。」
生徒
「最後に、注意点はありますか?」p>
先生
「はい、declareで設定した属性は現在のシェルセッション内のみ有効です。別のターミナルやスクリプト外では引き継がれません。必要に応じて再設定することが大切です。」