変数名=変数値変数値は省略する事ができ、その時変数にはヌル(空白)が定義されます。 変数を参照するには(変数を評価するには)、変数名の前にドル記号($)をつけます。 定義した変数の一覧は、引き数なしの set コマンドを用います。
| $ t=tanaka | # シェル変数の定義 | |
| $ echo $t | # 変数値への置換 | |
| tanaka | ||
| $ echo ${t}ichirou | # 変数名の後に文字列を続けて表示 | |
| tanakaichirou | ||
| $ t2=$t | # 別のシェル変数に代入 | |
| $ echo $t2 | ||
| tanaka | ||
| $ unset t | # 定義した変数の取り消し | |
| $ echo "[$t][$t2]" | ||
| [][tanaka] | # ない変数は NULL が返る | |
| $ set | ||
| BASH=/bin/bash | ||
| BASH_VERSINFO=([0]="2" [1]="05b" [2]="0" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") | ||
| BASH_VERSION='2.05b.0(1)-release' | ||
| COLORS=/etc/DIR_COLORS.xterm | ||
| COLORTERM= | ||
| COLUMNS=86 | ||
| : | ||
$ arry=(one two tree)
$ set |grep ^arry # 環境変数のうち arry で始まるものを表示
arry=([0]="one" [1]="two" [2]="tree")
$ echo ${arry[1]}
two
配列の全要素を指定する場合は添字にアスタリスク(*)またはアットマーク(@)を用います。
$ arry=(zero ${arry[*]})
$ set |grep ^arry
arry=([0]="zero" [1]="one" [2]="two" [3]="tree")
$ arry[3]=three
$ 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 と後方一致する全部分の削除 |
例
$ unset a ; b="sore"
$ echo "${a:-xxx}/${b:-yyy}"
xxx/sore
$ a= ; b="hoge"
$ echo "${a:=aaa} ${b:=bbb}"
aaa hoge
$ echo $a $b
aaa hoge
$ a=
$ echo ${a:?"not set"}
a: not set
$ a=a/b/c ; b=a/b/c
$ echo ${a%/*} ${a%%/*} ${b#*/} ${b##*/}
a/b a b/c c
| 式 | 意味 |
|---|---|
| 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 と前方一致する全部分の削除 |