jqはオブジェクトに値がnullまたは空の文字列のフィールドが含まれていると判断します

以下はサンプルコードです。次の 3 つの点に注意してください。

  1. jq では[]必ずしも配列のみを参照するわけではなく、対応する要素が配列ではなく Json オブジェクト (またはネストされたオブジェクト) の場合、ワイルドカード[]と同様にオブジェクト内のすべての要素を参照できます。*
  2. フィールド割り当てが null の場合(例: {"MskcPluginName": null})、jq を使用して読み取られる値は、エラーを報告したり null 値を返したりするのではなく、値「null」を持つ文字列になります。これにより、スクリプトが実行されます。これが、次のコードで if を使用してチェックする主な理由です。
  3. 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

おすすめ

転載: blog.csdn.net/bluishglc/article/details/131494322