変数名=変数値変数値は省略する事ができ、その時変数にはヌル(空白)が定義されます。 変数を参照するには(変数を評価するには)、変数名の前にドル記号($)をつけます。 定義した変数の一覧は、引き数なしの set コマンドを用います。
| [student@h006 ~]$ t=tanaka | # シェル変数の定義 | |
| [student@h006 ~]$ echo $t | # 変数値への置換 | |
| tanaka | ||
| [student@h006 ~]$ echo ${t}ichirou | # 変数名の後に文字列を続けて表示 | |
| tanakaichirou | ||
| [student@h006 ~]$ t2=$t | # 別のシェル変数に代入 | |
| [student@h006 ~]$ echo $t2 | ||
| tanaka | ||
| [student@h006 ~]$ unset t | # 定義した変数の取り消し | |
| [student@h006 ~]$ echo "[$t][$t2]" | ||
| [][tanaka] | # ない変数は NULL が返る | |
| [student@h006 ~]$ set | ||
| ABRT_DEBUG_LOG=/dev/null | ||
| BASH=/bin/bash | ||
| BASH_ALIASES=() | ||
| BASH_ARGC=() | ||
| : | ||
[student@h006 ~]$ arry=(one two tree)
[student@h006 ~]$ set |grep ^arry # 環境変数のうち arry で始まるものを表示
arry=([0]="one" [1]="two" [2]="tree")
[student@h006 ~]$ echo ${arry[1]}
two
配列の全要素を指定する場合は添字にアスタリスク(*)またはアットマーク(@)を用います。
[student@h006 ~]$ arry=(zero ${arry[*]})
[student@h006 ~]$ set |grep ^arry
arry=([0]="zero" [1]="one" [2]="two" [3]="tree")
[student@h006 ~]$ arry[3]=three
[student@h006 ~]$ set |grep ^arry
arry=([0]="zero" [1]="one" [2]="two" [3]="three")
${変数名 式 値}
| 式 | 意味 |
|---|---|
| val:-str | 変数 val が空の場合 str を返す |
| val:=str | 変数 val が空の場合 str を val に代入 |
| val:+str | 変数 val に値がある場合 str を返す |
| val:?"msg" | 変数 val が空の場合 msg を表示する。 |
| val#ptn | 変数 val について ptn と前方一致する部分の削除 |
| val##ptn | 変数 val について ptn と前方一致する全部分の削除 |
| val%ptn | 変数 val について ptn と後方一致する部分の削除 |
| val%%ptn | 変数 val について ptn と後方一致する全部分の削除 |
例
[student@h006 ~]$ unset a ; b="sore"
[student@h006 ~]$ echo ${a:-xxx}/${b:-yyy}
xxx/sore
[student@h006 ~]$ a= ; b="hoge"
[student@h006 ~]$ echo "${a:=aaa} ${b:=bbb}"
aaa hoge
[student@h006 ~]$ echo $a $b
aaa hoge
[student@h006 ~]$ a=
[student@h006 ~]$ echo ${a:?"not set"}
a: not set
[student@h006 ~]$ a=a/b/c ; b=a/b/c
[student@h006 ~]$ echo ${a%/*} ${a%%/*} ${b#*/} ${b##*/}
a/b a b/c c