【ShellScript】シェル変数
基本
代入
HOGE='hoge'
参照
"$HOGE" #あるいは "${HOGE}"
注意点
- 基本的に""(ダブルクォート)で囲む
→特殊文字などが解釈されないようにするため - {}は変数の区切りを表す
$ HOGE='hoge' $ echo "$HOGEaaaaa" #HOGEaaaaaという変数と解釈されるが、定義していないため空文字が返される $ echo "${HOGE}aaaaa" #{}によって変数名の区切りを明示している hogeaaaaa
特別な変数
PATH
外部コマンドの検索パス
HOME
ホームディレクトリ
IFS
単語分割に用いられる区切り文字の設定
PS1 / PS2
プロンプトの設定
# 設定を参照 Makoto-Air:ex makoto$ echo $PS1 \h:\W \u\$ Makoto-Air:ex makoto$ echo $PS2 > # 設定を変えてみる Makoto-Air:ex PS1='\u@\h \W:\$ ' makoto@Makoto-Air ex:$ PS2='>>>' makoto@Makoto-Air ex:$ for var in hoge fuga >>>
プロンプトの設定に利用できる特殊文字
特殊文字 | 内容 |
---|---|
\u | ユーザ |
\h | ホスト |
\W | カレントディレクトリ |
環境変数
変更
環境変数を設定後、exportコマンドを実行
$ HOGE='hoge' $ printenv HOGE # 変数を定義しただけでは環境変数には設定されない $ export HOGE #新たに環境変数を追加する場合はexportが必要 $ printenv HOGE hoge # すでに定義されている環境変数については値を変えるだけでよい $ printenv LANG ja_JP.UTF-8 $ LANG=C $ printenv LANG C
一時的な変更
単純コマンドの前に環境変数の設定をする
例)
$ printenv LANG ja_JP.UTF-8 $ date 2015年 12月25日 金曜日 06時41分48秒 JST # 環境変数LANGを変更してdateコマンドを実行 $ LANG=C date #言語をデフォルト(英語)に変更 Fri Dec 25 06:41:58 JST 2015 # 環境変数の確認 $ printenv LANG ja_JP.UTF-8 #変わっていない # 2つ以上の変更も可能 $ LANG=C TZ=UTC date #言語をデフォルト(英語)、タイムゾーンをUTCに変更 Thu Dec 24 21:47:28 UTC 2015