シェルスクリプトの変数名は先頭文字に数字を使えない
シェルスクリプトで定義する変数名には、ルールがあります。
※ 数字を先頭にした変数名は利用できません。
数字を先頭にした変数名を使用すると、以下のエラーが発生します。
・日本語表示
1HENSU=AAA BBB: コマンドが見つかりません
${1HENSU}: 悪い代理・英語表示
1HENSU=AAA BBB: command not found
${1HENSU}: bad substitution
実際にテストしてみます。
失敗するパターン
数字から始まる変数名を使った例です。変数名は「1HENSU」です。
実行してみると、「コマンドが見つかりません」と「悪い代理」というエラーになります。
・シェルスクリプト内容
# cat ./test.sh #!/bin/sh 1HENSU="AAA BBB" echo ${1HENSU} #
・実行結果
# ./test.sh ./test.sh: line 3: 1HENSU=AAA BBB: コマンドが見つかりません ./test.sh: line 5: ${1HENSU}: 悪い代理 #
・LNG=Cで実行する
英語表示で実行してみると、「command not found」と「bad substitution」というエラーになります。
# LANG=C # ./test.sh ./test.sh: line 3: 1HENSU=AAA BBB: command not found ./test.sh: line 5: ${1HENSU}: bad substitution #
成功するパターン
変数名を「1HENSU」から「HENSU」に変えて実行してみると、うまく動いてくれます。
・シェルスクリプト内容
# cat ./test.sh #!/bin/sh HENSU="AAA BBB" echo ${HENSU} #
・実行結果
# ./test.sh AAA BBB #