このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

シェル変数の設定や属性変更:declareコマンド

declare コマンドの概要

 「declare」コマンドは、変数の属性を設定したり、変数に値を設定したりするために使用されます。特に、シェル変数のデータ型やアクセス属性を定義する際に便利です。「declare」コマンドは主に Bash シェルで使用されます。

【構文】
declare [オプション] [変数名[=値]]

主なオプションと説明

オプション説明
-p変数の属性と値を表示します。指定した変数が存在しない場合、全ての変数を表示します。
-x変数をエクスポートします(環境変数にします)。このオプションを使用すると、変数はサブシェルや子プロセスでも利用可能になります。
-i変数を整数型として宣言します。このオプションを使用すると、変数は常に整数として扱われます。
-r変数を読み取り専用に設定します。このオプションを使用すると、変数の値を変更できなくなります。
主なオプションと説明

コマンドの使用例と解説

1.変数の属性と値を表示する(-p オプション)

以下のコマンドを実行します。

  • declare myVar="Hello, World!"」コマンド
  • declare -p myVar」コマンド

 このコマンドでは、「myVar」という変数を定義し、その属性と値を 「declare -p」を使って表示します。変数の属性と値が表示されます。

# 変数を定義
user01@ubuntu-vm:~$ declare myVar="Hello, World!"

# 変数の属性と値を表示
user01@ubuntu-vm:~$ declare -p myVar
declare -- myVar="Hello, World!"
2.変数をエクスポート(環境変数に)する(-x オプション)

以下のコマンドを実行します。

  • declare -x myVar="Hello, Exported World!"」コマンド
  • bash -c 'echo $myVar'」コマンド

 このコマンドでは、「myVar」という変数を「 -x」オプションでエクスポートしています(環境変数にしています)。これにより、サブシェル(新しく起動した bash プロセス)でも「myVar」の値が利用可能になります。

# 変数を定義
user01@ubuntu-vm:~$ declare -x myVar="Hello, Exported World!"

# サブシェルを起動して変数の値を確認
user01@ubuntu-vm:~$ bash -c 'echo $myVar'
Hello, Exported World!
3.数値変数として宣言する(-i オプション)

以下のコマンドを実行します。

  • declare -i numVar=10」コマンド
  • numVar+=5」コマンド
  • echo $numVar」コマンド

 「declare -i」を使用して数値変数を宣言しています。このオプションを使用すると、その変数は常に整数として扱われ、計算も適切に行われます。上記の例では、「numVar」に「5」を追加し、その結果を表示しています。

# 数値変数として定義
user01@ubuntu-vm:~$ declare -i numVar=10

# 数値変数に対して計算を実行
user01@ubuntu-vm:~$ numVar+=5
user01@ubuntu-vm:~$ echo $numVar
15
4.読み取り専用変数として宣言する(-r オプション)

以下のコマンドを実行します。

  • declare -r readonlyVar="This is read-only"」コマンド
  • readonlyVar="Attempt to change"」コマンド

 「declare -r」 を使用して変数を読み取り専用に設定しています。この変数の値を変更しようとするとエラーが発生します。

# 読み取り専用変数として定義
user01@ubuntu-vm:~$ declare -r readonlyVar="This is read-only"

# 変数の変更を試みる(エラーになります)
user01@ubuntu-vm:~$ readonlyVar="Attempt to change"
bash: readonlyVar: 読み取り専用の変数です

まとめ

 「declare」コマンドは、シェル変数の属性を柔軟に設定・変更するための強力なツールです。特に、変数のエクスポートや読み取り専用の設定、数値変数の宣言など、多くのシナリオで役立ちます。上記の例と表を参考にして、効果的に「declare」コマンドを活用してください。