kshで一種のプロパティセットを構築しようとしています。kshでの配列の優雅な使用
私が考えている最も簡単な方法は、配列を使用していましたが、構文が私を殺しています。
は、私が欲しいのは
- に名前とプロパティを使用して設定ファイル内の任意のサイズの配列を構築しています。
- リスト内の各項目を繰り返し、そのプロパティを取得します。私は私が行うことがしたい何
私の理論は後に、何か行うことができその後
MONITORINGSYS={
SYS1={NAME="GENERATOR" MONITORFUNC="getGeneratorStatus"}
SYS2={NAME="COOLER" MONITORFUNC="getCoolerStatus"}
}
のようなものです:まあ、それは本当のプログラミングではありません
for CURSYS in $MONITORINGSYS
do
CSYSNAME=$CURSYS.NAME
CSYSFUNC=$CURSYS.MONITORFUNC
REPORT="$REPORT\n$CSYSNAME"
CSYSSTATUS=CSYSFUNC $(date)
REPORT="$REPORT\t$CSYSSTATUS"
done
echo $REPORT
を、しかし、私はあなたがポイントを持っていると思います..
どうすればいいですか?
[EDIT]
私は連想配列を使用したいというわけではありません。私は私の質問をより明確にするためにこの方法をとっているだけです。
for CURSYS in $MONITORINGSYS
do
CSYSNAME=${CURSYS[0]}
CSYSFUNC=${CURSYS[1]}
REPORT="$REPORT\n$CSYSNAME"
CSYSSTATUS=CSYSFUNC $(date)
REPORT="$REPORT\t$CSYSSTATUS"
done
echo $REPORT
同じ、私はちょうどそれが最小限に読みやすくなります構文を探しています...設定ファイルに適用されます。ループのようなものだったかどうかは問題ではないでしょう。
歓声
ありません。 ksh配列は整数ベースのみです。少なくともksh実装にはアクセスできます。解析できる賢明な文字列で何かをハックすることができると確信していますが、連想配列が必要な場合は、連想配列で言語を選択してください。 –
これは間違いなくksh88m以降のバージョンで可能です。申し訳ありませんが、今すぐあなたに例を挙げる時間がありません。 kornshell.comを見て、UWIN版を入手してください。 'set -A myArr'はあなたを起動させます。私はあなたが記述するよりも複雑な、何メガバイトの変数を持つ人々のUWINメーリングリストに関するレポートを見ました。がんばろう。 – shellter
ありがとうございますが、配列は結合的である必要はありません。私はそれを明確にするためにその方法を説明したにすぎません。私はアクセスしても '' CSYSNAME = CURSYS [0] ''と '' CSYSFUNC = CURSYS [1] ''と言うことはできません。 – filippo