変数へ値を代入するときは $
を付けず、変数を参照するときは $
を付けます。
#!/bin/sh
name=Michael # 変数の定義
echo Hello $name # 変数の参照
echo "Hello $name" # ダブルクォーテーションは変数を展開する
echo 'Hello $name' # シングルクォーテーションは変数を展開しない
$ ./sample.sh
Hello Michael
Hello Michael
Hello $name
未定義の変数を参照すると、空文字列と同様に扱われます。 エラーにはなりません。
#!/bin/sh
echo "Hello $name !"
$ ./sample.sh
Hello !
変数定義の =
の前後にはスペースを入れてはいけません。
スペースを入れると、変数名の部分がシェル上で実行可能なコマンドとして認識されてしまいます。
例えば、以下のようにすると、value
というコマンドを、引数 "= hello"
で実行すると解釈されてしまいます。
value = hello
さらに、以下のように、"="
の後ろだけにスペースを入れると、、、
value= hello
これは、変数 value
を空にした状態で、コマンド hello
を呼び出すと解釈されてしまいます。