2019-03-14-01-fieldコマンドに-Uオプションを追加 - project-enigma

2019-03-14-01-fieldコマンドに-Uオプションを追加

>> Site top >> weblog >> 月別アーカイブ >> 2019年03月のlog >> 2019-03-14-01-fieldコマンドに-Uオプションを追加

最終更新日付:2019/03/14 20:00:00


fieldコマンドに-Uオプションを追加

2019 年 03 月 14 日

昨日書いた、閲覧/編集ファイル名のカスタマイズで、想定している使い方のひとつとして以下のように書いた。

しかし、現状の field コマンドでは、指定したユーザーフィールドのキー名が存在しないとエラーになる‥‥‥。これをなんとかした、という話。

 

先に field -u オプションについておさらいしておこう。field コマンドは、通常 field TITLE DATAID の要領で使用する。最初のパラメータの TITLE という部分は(共通部分もあるが)各種データに固有のフィールド名だ。この名前においては、ユーザー定義フィールドは USER1 〜 USER3 の3種類がある。しかし、この3つの何処に保存するかではなく、別の名前で管理したいということもある。field -u はそういう時に使用するもので、たとえば以下のようにすると、

field -u FOO DATAID "this is new value"

steam は DATAID で指定されたデータのユーザー定義フィールドで空いているところを探し、キー名 FOO と共に保存する。仮に USER1 が空いていたとすると以下のようになる。

USER1:FOO=this is new value

もちろん、すでに上記の USER1:FOO=〜 という形式になっているユーザー定義フィールドがあれば、そこを上書きすることになる。あまりキレイな方式ではないが、ひとまずユーザー定義フィールドと field -u オプションはそういうモノだ。

やや脱線だが、ユーザー定義フィールドの値を取得する場合に問題が発生することがある。それは、-u オプションを使う場合とそうでない場合が混在した時だ。たとえば、前述のデータに対して field -u FOO DATAID とやると文字列 "this is new value" が返るが、field USER1 DATAID とした場合には "FOO=this is new value" という文字列が返るのだ。だから、ユーザー定義フィールドを使う場合、少なくともデータ別にキー名でアクセスするのかフィールド名でアクセスするのかは決めておく必要がある。

さて、本題。field -u でキー名を指定してユーザー定義フィールドにアクセスする場合、指定したキー名を持つユーザー定義フィールドがないとエラーになる。基本的にそこの制御はユーザーに委ねられているので、指定した名前のキーがないのをエラーにするのは無体というものではない。しかし、「あれば欲しいがなければないで良い」という時もある。冒頭に書いた以下の閲覧/編集ファイル名生成の件はまさにそれだ。

この場合、EDITKEY というキー名のユーザー定義フィールドがあればそれをファイル名に使用し、なければ使わない、としたい。しかし、field -u で取得に行くと無い場合にエラーになる。さてどうしたもんかというわけだ。

長くなってしまったが、結論は簡単だ。field -U というオプションを新規追加し、こちらは「なくてもエラーにせず、ただ空文字列を出力する」とした。おしまい。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : fist

 

 


Copyright(C) 2005-2019 project-enigma.
Generated by CL-PREFAB.