Author here – you are correct, I tried to golf a relatively long script down to one line, and I failed :) The post has been updated.
set -e -u -o pipefail
(dos-make-addr-conf | tee config.toml) && dosctr set template_vars config.toml
well....
`tee config.toml` will still produce a empty config.toml
(set -e - u -o pipefail;false | tee config.toml) && cat config.toml
But you can use the '>' operator, that will create the file only if the command runs successful:
dos-make-addr-conf > config.toml && dosctr set template_vars config.toml
It will still create the file.
Run this in bash, zsh or fish:
false > falsefile
It will create an empty file called "falsefile". This is because the shell opens the file before the program runs.What fixes it in your script is the `&&`. That causes the `dosctr` to only be run if the `dos-make-addr-conf` succeeded.