我有以下命令作為makefile命令:
update-env:
echo "{ \"Variables\":${ENV_VALUE}}" > ./new_env.json && \
UPDATE_ENVVARS=$$(jq -s '.[0] as $$a |.[1] as $$b | $$a * $$b' old_env.json new_env.json | jq -c . ) && \
echo "${UPDATE_ENVVARS}"
- 是
${ENV_VALUE}
什么時候拍的
make update-env ENV_VALUE="{\\\"HOST_URL\\\": \\\"https:\\\/\\\/test.com\\\"}"
該檔案
new_env.json
已正確生成執行時
jq -s '.[0] as $a |.[1] as $b | $a * $b' old_env.json new_env.json | jq -c .
會生成所需的適當緊湊 json 結果。
按順序運行所有內容(用于驗證的分配和回顯)時,我得到一個空結果。
我對該命令的目標是合并兩個 json 輸出并將其分配給 ,以便將UPDATE_ENVVARS
其重新用作另一個將接受 json 的命令的輸入。根據測驗,回顯時它是空的,當我執行jq
獨奏時,合并輸出是有效的。
uj5u.com熱心網友回復:
只需要一點點編輯:
update-env:
echo '{ "Variables":${ENV_VALUE}}' > ./new_env.json && \
UPDATE_ENVVARS=$$(jq -s '.[0] as $$a |.[1] as $$b | $$a * $$b' old_env.json new_env.json | jq -c . ) && \
echo "$${UPDATE_ENVVARS}"
筆記:
- 我們在第一行使用單引號
echo
——替換是由 執行的make
,而不是由 shell 執行的,所以單引號不會抑制它。 - 我們將
$$
最后一行中的值加倍,因此我們擴展了配方第二行中設定的 shell 變數,而不是一個根本沒有設定的 make 變數。
在https://replit.com/@CharlesDuffy2/RoyalIdolizedProfile看到這個作業
相比之下,如果要分配給make變數而不是shell變數,則此問題與Makefile 命令替換問題重復,Ignacio Vazquez-Abrams的答案是合適的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/496506.html
下一篇:使用命令替換修改陣列