4.2 変数、リスト、引用符

csh スクリプトでは、変数を使用することができます。 変数には、環境変数 (setenv で設定) と シェル変数 (set で設定) の 2 種類がありますが、 環境変数は他のコマンドの動作にも影響を与えることがありますので、 特別な目的以外にはあまり利用はせず、 変数として主に利用するのはシェル変数の方です。

なお、環境変数名は大文字に、シェル変数名は小文字にするのが慣例となっています。

シェル変数の設定と参照は以下のように行います (name が変数名、 value が値)。

シェル変数名 name はアルファベットまたは下線で始まり、 アルファベットか数字か下線からなる 20 字以内の文字列です。 ただし、以下の名前は特別な意味を持つので、 その特別な機能を使用する場合以外には使ってはいけません (csh によっては、以下以外にも予約されている名前がある場合もあります)。 argv 以外のそれぞれの詳しい意味については、 csh のマニュアルや [3] などを参照してください。

argv, cdpath, cwd, echo, filec, histchars, history, home, ignoreeof, mail, noclobber, noglob, nonomatch, notify, path, prompt, savehist, shell, status, time, verbose

参照の方の第 2 の形式は、その直後に文字や記号などを付ける場合に、 変数名とそれ以外の部分との区別をするために { }で変数名をくくります。

変数の値は、文字列、または リスト です。

変数値として数字を設定してもそれは文字列と見なされますが、 @ 計算式内や条件式で数字と解釈される状況では数字として評価されます。 ただし、整数しか使用できません。

スペースが含まれる文字列は、引用符 (" " または ' ') で囲むことで一つの文字列にできます。 なお、" " (二重引用符) 内では、 $name の展開 (その値への置き換え) が行われますが、 ' ' (単一引用符) 内ではその展開は行われません。

リストは、文字列を要素とする配列のようなもので、詳しくは以下のように設定、 参照できます。

なお、予約済みのリスト変数 argv は、 シェルスクリプトの実行時に与えられたコマンドラインオプションを リストとして保存しますので、これを参照することで、 コマンドラインオプションを処理するシェルスクリプトを作成できます。 ただし、C 言語とは違い、$argv[0] はなく、 代わりにそのシェルスクリプトファイル名自体は $0 として参照します。

$?name、あるいは ${?name} は、 その変数が定義されているときに 1、 定義されていないときには 0 という値になります。 変数を削除 (未定義) にするには、unset 命令を利用します:

unset name

なお、数値を設定する場合は、4.3 節の @ を使って変数を設定することもできます。

竹野茂治@新潟工科大学
2008年1月13日