シェルスクリプトの変数名は先頭文字に数字を使えない
シェルスクリプトで定義する変数名には、ルールがあります。
※ 数字を先頭にした変数名は利用できません。
数字を先頭にした変数名を使用すると、以下のエラーが発生します。
・日本語表示
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 #


