私はこれを持っています:
master="master";
integration="integration";
if [ -f '.vcs.json' ]; then
master=`read_json -f .vcs.json -k git.master`
integration=`read_json -f .vcs.json -k git.integration`
fi
しかし、read_jsonの結果が空でない場合にのみ、デフォルト/統合変数をオーバーライドしたいと思います。
私は次のことを考えています:
master="master";
integration="integration";
if [ -f '.vcs.json' ]; then
master="${`read_json -f .vcs.json -k git.master`:-master}"
integration="${`read_json -f .vcs.json -k git.integration`:-integration}"
fi
しかし、構文が正しいかどうかはわかりません。
ベストアンサー1
文字列が空でない場合にのみ操作を実行するには、変数を参照するときにパラメータのデフォルト値を使用してください。
master="$(read_json -f .vcs.json -k git.master)"
サブシェルコマンドが出力を返さない場合、変数はnullになります。その後、基本的な交換でこれを利用できます。
do-a-thing "${master-master}" # if 'master' is null, use the default value 'master'
# otherwise, use the contents of the variable