変数名=変数値変数値は省略する事ができ、その時変数にはヌル(空白)が定義されます。 変数を参照するには(変数を評価するには)、変数名の前にドル記号($)をつけます。 定義した変数の一覧は、引き数なしの 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