以下はサンプルコードです。次の 3 つの点に注意してください。
- jq では
[]
必ずしも配列のみを参照するわけではなく、対応する要素が配列ではなく Json オブジェクト (またはネストされたオブジェクト) の場合、ワイルドカード[]
と同様にオブジェクト内のすべての要素を参照できます。*
- フィールド割り当てが null の場合(例: {"MskcPluginName": null})、jq を使用して読み取られる値は、エラーを報告したり null 値を返したりするのではなく、値「null」を持つ文字列になります。これにより、スクリプトが実行されます。これが、次のコードで if を使用してチェックする主な理由です。
- Json が常にシェル スクリプトによって生成される場合、if を使用してチェックする必要はありません。その場合、初期値がすべて null である Json ファイルは存在しませんが、すべての Json コンテンツはコマンド ラインによって書き込まれます (後で説明するように)。プロジェクトで使用されています)
# only when no any field is null or empty, load configs
# this can prevent loading string "null" or "" as value to opts.
if [[ -z $(jq -r '.[] | select(. == null or . == "")' $OSCI_CONF_FILE) ]]; then
MSKC_PLUGIN_NAME=$(echo $mskcPluginConfig | jq -r '.MskcPluginName')
MSKC_PLUGIN_ARN=$(echo $mskcPluginConfig | jq -r '.MskcPluginArn')
checkMskcPluginConfOpts
fi