実際にどこが失敗しているのかわからないので、タイトルが正しくない可能性があります。 1つのディレクトリでbashスクリプトを実行しており、別のディレクトリから値が必要なJSONファイルがあります。外部ディレクトリの値を現在のディレクトリの同一のJSONファイルにコピーしたいとします。別のディレクトリからJQでjsonフィールドの値を取得してください
私は値をつかむためにJQを使用していますが、私は、スクリプトが実行されているもの以外のディレクトリからつかむ方法を見つけ出すことはできません。
を次のようにファイル構造の関連するビットであります;
cloudformation
- parameters_v13.json
environment_files
- prepare_stack_files.json (the script this is run from)
- directory, changes based on where the script is pointed
- created directory where created files are being output
- GREPNAME_parameters.json
興味のあるJSONファイルのチャンクは、このように見えます。
[
{
"ParameterKey": "RTSMEMAIL",
"ParameterValue": "secretemail"
}
]
スクリプトはcloudformation/parameters_v13.json
から「secretemail」を取得し、GREPNAME_parameters.json
ファイルに一致するRTSMEMAILフィールドに貼り付けする必要があります。
私は運がないと次のことを試みてきました。何も出力されませんでした。エラーメッセージも表示されず、ブランク出力のみです。 GREPNAMEのパスは正しいですが、別の場所で問題なく使用されているためです。
jq --arg email "$EMAIL" '(.[] | select(.ParameterKey == "RTSMEMAIL") | .ParameterValue) |= $email' ../cloudformation/parameters_v13.json | sponge ${GREPNAME}_parameters.json
あなたの入力は、検証可能ではありませんあなたは完全な 'json'やサンプルファイルを提供することができます。 – Inian
右のように大括弧を入れて、完全なファイルを数えてください。 – Alex
'' $ ja --arg email "$(。[] | select(.ParameterKey ==" RTSMEMAIL ")| .ParameterValue )| = $ email''、それは私に空白の出力を与えています。 – Inian