「シェルスクリプトの基礎 - 変数」の版間の差分

ナビゲーションに移動 検索に移動
編集の要約なし
(ページの作成:「== 概要 == <br><br> == 文字列の連結 == 複数の変数を連結するには、以下のように続けて記述する。<br> <source lang="sh"> #!/bin/sh S…」)
 
編集の要約なし
1行目: 1行目:
== 概要 ==
== 概要 ==


<br><br>
== 変数の定義と参照 ==
変数へ値を代入する時は$を付けず、変数を参照するときは$を付ける。<br>
<source lang="sh">
#!/bin/sh
name=Michael        # 変数の定義
echo Hello $name    # 変数の参照
echo "Hello $name"  # ダブルクォーテーションは変数を展開する
echo 'Hello $name'  # シングルクォーテーションは変数を展開しない
</source>
<br>
# 出力
Hello Michael
Hello Michael
Hello $name
<br>
未定義の変数を参照すると、空文字列と同様に扱われる。(エラーにはならない)<br>
<source lang="sh">
#!/bin/sh
echo "Hello $name !"
</source>
<br>
# 出力
Hello  !
<br><br>
== 定数 ==
以下のように実行すると、指定した変数や関数に対する代入、<code>unset</code>ができなくなる。<br>
<source lang="sh">
readonly var      # 変数varをreadonlyにする
readonly -a arr  # 配列arrをreadonlyにする
readonly -f func  # 関数funcをreadonlyにする
</source>
<br>
以下のように、変数の定義と同時にreadonlyを指定することも可能である。<br>
<source lang="sh">
readonly USERNAME="Mike"
</source>
<br>
以下の例では、変数MAX_SIZEを100で初期化した後、200という値を代入しようとしている。<br>
変数MAX_SIZEは定数化されているので、代入しようとした場合はエラーになる。<br>
<source lang="sh">
#!/bin/bash
readonly MAX_SIZE=100
MAX_SIZE=200
</source>
<br>
# 出力
./sample.sh: 行 4: MAX_SIZE: 読み取り専用の変数です
<br><br>
== 変数の値の確認 ==
<code>test</code>や<code>[ ... ]</code>で使用できる演算子には、以下のようなものがある。<br>
* -z 文字列
*: 文字列の長さが0の場合に真
* -n 文字列
*: 文字列の長さが0でない場合に真
<br>
変数名にダブルクォーテーションを付けて値を展開して、上記の演算子でその文字列の長さをチェックすることにより、<br>
変数に値が代入されている(または、代入されていない)ことを確認することができる。<br>
<br>
==== 変数に値が代入されていることを確認する ====
以下の例では、変数NAMEの値がセットされているか調べている。<br>
<source lang="sh">
#!/bin/bash
if [ -n "$NAME" ]; then
    echo $NAME
fi
</source>
<br>
==== 変数に値が代入されていないことを確認する ====
以下の例では、変数NAMEの値がセットされていないか調べている。<br>
<source lang="sh">
#!/bin/bash
if [ -z "$NAME" ]; then
    echo 'NAME is not set'
fi
</source>
<br>
# 出力
NAME is not set
<br><br>
<br><br>


案内メニュー