#!/bin/bash # set -x source ./log_helpers exec_process_substitution () { local func="${FUNCNAME[0]}" log_debug "$func:${LINENO} exec-ing [$*]" exec {fd}< <(eval "$@") local __result_code=$? local ps_pid=$! # remember pid of process substitution local __result="" while read __tmp <&$fd; do if ! [ -z "$__tmp" ]; then __result="${__result}$__tmp" fi done exec {fd}>&- # close fd (i.e. process substitution) wait $ps_pid # wait for the subshell to finish __result=${__result//[$'\r\n\t']/ } # remove \r\n\t from __result log_debug "$func:${LINENO} result=$__result" printf '%s' "$__result" return $__result_code } usage () { echo "Usage: $PROGRAM [--file config] [--?] [--help] [--version] [--dbg]" # UpdateController.conf" } usage_and_exit () { usage exit $1 } version () { echo "$PROGRAM version $VERSION" } error () { echo "$@" 1>&2 usage_and_exit 1 }