it is not empty that file. I can prove that the result of this:
echo "$J_FILE" | \
jq '.modules[0].args.IoTHubName="<IoTHubName>"' | \
jq '.modules[0].args.IoTHubSuffix="azure-devices.net"' | \
jq '.modules[0].args.Transport="AMQP"' | \
jq '.modules[1].args[0].deviceId="'$DEVICE1'"' | \
jq '.modules[1].args[0].deviceKey="'$DEVICE1KEY'"' | \
jq '.modules[1].args[1].deviceId="'$DEVICE2'"' | \
jq '.modules[1].args[1].deviceKey="'$DEVICE2KEY'"' \
> replaced.json
is an empty file!