Table of Contents
値を一時保存して利用する
変数とは、シェルスクリプト内で数値や文字列を保持しておけるものです。好きな値を入れておける箱のようなものと考えてください。計算の結果を保持したり、良く使う文字列を保存して色々なところから呼び出したりできます。
変数の作り方
次の例では、test1、test2 という2つの変数を作り、それぞれに数値の 3 と文字列「Hello!」を代入しています。変数に値を代入するには、次のように = (イコール) を使います。
#!/bin/bash test1=3 test2="Hello!"
変数の名前にはアルファベット、数字、 _ (アンダースコア) を使うことができます。
ただし、1文字目に数字は使えません。また = の前後にスペースを入れるとエラーになってしまいます。
変数を使う
変数の中身を使いたいときは、 ${〜} というように変数名を囲んで書きます。
#!/bin/bash test1=3 test2="Hello!" echo "test1の中身は${test1}です。" echo "test2の中身は${test2}です。"
実行結果
test1の中身は3です
test2の中身はHello!です。
test2の中身はHello!です。
さて、実際に実用的なシェルスクリプトを書く場合は、変数の名前をわかりやすくつけることが望ましいです。
例えば、名前を保存した変数なら「name」、年齢を保存した変数なら「age」のような感じです。以下に例を示します。
#!/bin/bash name="taro" age=24 echo 私は${name}です。# ${ここに変数名}という様に書きます echo 年齢は${age}です。
実行結果
私はtaroです。
年齢は24です。
年齢は24です。
変数名の前に $ をつければ、{ } を省略できる場合もあります。
#!/bin/bash name="taro" age=24 echo $name echo $age
しかし、どこまでが変数名なのかわかりにくくなるため、省略せずに書くことをお勧めします。
変数は、後から中身を変えたり、複数の場所で呼び出したりすることができます。次の例では、変数 name に文字列「taro」を代入して表示した後、変数の中身を「hiro」に変更して再度表示しています。
#!/bin/bash name="taro" echo 私は${name}です。 name="hiro" echo あなたは${name}です。
実行結果
私はtaroです。
私はhiroです。
私はhiroです。
練習問題
以下の条件を満たすシェルスクリプトを作ってください。
- 2つの変数 like と dislike を作り、like には好きなものの名前を、dislike には嫌いなものの名前を代入してください。
- この2つの変数を使って「私の好きなものは◯◯で、嫌いなものは□□です。あなたも◯◯が好きですか?」という文を表示してください。
答え(クリックで開く)
#!/bin/bash like="サカナ" dislike="虫" echo 私の好きなものは${like}で、嫌いなものは${dislike}です。あなたも${like}が好きですか?