Cシェルの変数

変数の使い方

Cシェルの変数の基本的なことは、 シェルスクリプトの変数 を参照してもらって、ここではもう少し進んだことを述べてみよう。
シェルの変数には、数字でも文字列でも、そのまま代入できるが、 その代入された変数を、他の変数に組み合わせて代入することもできる。

# set x = 2
# set y = test
# set z = $y$x
# echo $z
test2

そして、変数の値はコマンドの引数として使用できる。

# cc $z.c            <-- cc test2.c と同じ

しかし、変数を他の文字列と組み合わせる時には、注意が必要となる。
例えば、kadai10.ppm という文字列を tmp という変数に代入しようとして、 変数fileとの組合せでやろうとした時

# set file = kadai
# set tmp = $file10.ppm
file10 : Undefined Variable

とやると、上のように Undefined Variable というエラーメッセージが出て失敗する。
これは、シェルが $file10 が変数名だと考えて、そんな変数は定義されていない、といっているので ちゃんと file までが変数名だと、教えてやれば良い。 そのためには{}を使用する。

# set tmp = ${file}10.ppm

これで、{}で囲まれた file の部分が、変数名だとわかるので、正しく tmp に kadai10.ppm が代入される。
この{}が必要なのは、変数名のすぐ後に英数字が来る時だけである。 それ以外の文字が来る時(ドルマーク$, ピリオド. など)の時は必要無い。

変数の修飾

変数にファイル名などが入っている場合、そこからパス名や拡張子の部分を取り去ったりしたいことがある。
そのような場合には、変数に:をつけることによってパス名・ファイル名から各部分を 削除・変更できる。

:r
拡張子の部分を取る。
:h
パス名を取り出す。
:e
拡張子を取り出す。
:t
ファイル名と拡張子を取り出す。

# set name = /aaa/bbb/ccc.ddd
# echo $name:r
/aaa/bbb/ccc
# echo $name:h
/aaa/bbb
# echo $name:e
ddd
# echo $name:t
ccc.ddd

Home | Contents
Mail