Section Next | Prev


3.1 シェル変数

シェルには、値として文字列または数字を含む変数があります。変数名は英字で始まり 英字、数字、アンダースコアで表される文字列です。 シェル変数の定義は等号を用いて次の様に行ないます。
	変数名=変数値
変数値は省略する事ができ、その時変数にはヌル(空白)が定義されます。 変数を参照するには(変数を評価するには)、変数名の前にドル記号($)をつけます。 定義した変数の一覧は、引き数なしの set コマンドを用います。

$ t=tanaka# シェル変数の定義
$ echo $t# 変数値への置換
tanaka
$ echo ${t}ichirou# 変数名の後に文字列を続けて表示
tanakaichirou
$ t2=$t# 別のシェル変数に代入
$ echo $t2
tanaka
$ unset t# 定義した変数の取り消し
$ echo "[$t][$t2]"
[][tanaka]# ない変数は NULL が返る
$ set
CDAPATH=.:/usr/jsy/bin:/usr/bin
CDPATH=.:/usr/users/yakoshi:/usr/users:/proj1/ycos1
CFLAGS=-g
DISPLAY=:0

配列への値代入は set の配列オプション(A) を用います。
	$ set -A arry one two tree
	$ set  |grep ^arry
	arry[0]=one
	arry[1]=two
	arry[2]=tree
	$ set -A arry zero ${arry[*]}
	$ set  |grep ^arry
	arry[0]=zero
	arry[1]=one
	arry[2]=two
	arry[3]=tree
	$ arry[3]=three
	$ set  |grep ^arry
	arry[0]=zero
	arry[1]=one
	arry[2]=two
	arry[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 と後方一致する部分の削除

	$ 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%/} ${b#/}  
	a/b   b/c

Section Next | Prev

Copyright 2007 ycosSystems KShell/Body31.html