CEX 条件によるコマンドラインの選択実行

書法

CEX [commandline]* [options]*

SHELLMODE

@記述、!記述、^記述、#記述

詳細

記述したコマンドラインの一つを条件が満たせば実行する。コマンドラインの標準入力にはこのコマンドの標準入力が与えられる。
コマンドラインが一つもなければ何もしない。

標準入力の有無で判定

標準入力にデータがあれば、最初のコマンドライン、データがなければ二番目コマンドラインを実行する。
実行すべきコマンドラインを省略すると何もしない。
データの有無で処理を簡易に切り替えることができる。

論理式で判定

オプション-Bで指定した論理値を返すtsexprの値が真ならば、最初のコマンドライン、偽ならば二番目のコマンドラインを実行する。
実行すべきコマンドラインを省略するか、長さ0の文字列ならば何もしない。

番号で指定

オプション-Cで指定した整数値を返すtsexprの値で実行すべきコマンドラインの番号を指定する。
番号は0から始まる整数。 実行すべきコマンドラインを省略するか、長さ0の文字列ならば何もしない。

先頭行で判定

オプション-Tを指定するとこのモードになる。
このモードでは標準入力をテキストとして扱う。標準入力の先頭一行を読み込んだ状態で、tsexprを評価し、その返す整数値に相当する番号のコマンドラインに切り替える。コマンドラインには二行目以降の行が標準入力として与えられる。
コマンドラインの番号は0から数える。
-T:で始めると最初の一行は除外されずにコマンドラインに与えられる。
先頭行がない場合は、何もしない。また、存在しない番号を指定した場合にも何もしない。

tsexprでは次のアプリケーション変数を使用できる。

ユーザー変数名内容
??ccコマンドラインの数
??line先頭行

全体を読んで判定

オプション-Zを指定するとこのモードになる。
このモードでは標準入力をテキストとして扱い、全ての行を読んで、行末にLF(\n)を付加して連結する。この状態でtsexprを評価し、その返す整数値に相当する番号のコマンドラインに切り替える。
指定した整数値を返すtsexprの値で実行すべきコマンドラインの番号を指定する。
コマンドラインには、入力の全体が与えられる。行はCRLFで連結されている。
コマンドラインの番号は0から数える。

tsexprでは次のアプリケーション変数を使用できる。

ユーザー変数名内容
??ccコマンドラインの数
??lc読み込んだ行数
??lines入力の全体

行毎に切り替え

オプション-Lを指定するとこのモードになる。
このモードでは標準入力をテキストとして扱う。一行毎にtsexprを評価し、その返す整数値で相当する番号のコマンドラインを指定する。
コマンドラインの存在しない番号を指定した場合はその行は無視する。
同一のコマンドラインの実行は、指定が切り替わるまで継続する。行の塊に対して次々にコマンドラインを切り替えていく。
コマンドラインの番号は0から数える。

tsexprでは次のアプリケーション変数を使用できる。

ユーザー変数名内容
??ccコマンドラインの数
??ln現在の行番号(1~)
??line現在行

指定行数で切り替え

オプション-Aを指定するとこのモードになる。
このモードでは標準入力をテキストとして扱う。指定した行数の並びに応じて、行数毎にコマンドラインを順番に割り当てる。
行数の取り出しは、一巡すると並びの先頭へ戻る。コマンドラインの割り当ても一巡すると先頭から行う。行数並びの数とコマンドラインの数が異なると割り当ての周期がずれることがある。

行数並びの後に「*」を書くと行数の割り当てが終わったとき、以降は最後に割り当てられたコマンドラインに行を割り当てる。

OPTION

-A行数[,行数]*[*]
指定行数で切り替えモードに切り替える。行数の並びを記述する。行数並びは繰り返して使用される。最後に「*」を書くと行数割り当ては一巡だけ用い、一巡以降は最後の割り当て状態を保つ。
-Btsexpr
論理式で判定モードに切り替える。論理値を返すtsexprを記述する。
-Ctsexpr
番号で指定モードに切り替える。整数値を返すtsexprを記述する。
-Ffilename
標準入力の代わりにここで指定したファイルを使用する。
-Ltsexpr
行毎に切り替えモードに切り替える。整数値を返すtsexprを記述する。
-T[:]tsexpr
先頭行で判定モードに切り替える。整数値を返すtsexprを記述する。
-Ztsexpr
全体を読んで判定モードに切り替える。整数値を返すtsexprを記述する。

戻り値

何かエラーが起きれば、0。 正常に実行されれば1を返す。

用例

参考

バージョン

Ver 1.002014/12/30初版