31 lines
720 B
Bash
Executable File
31 lines
720 B
Bash
Executable File
#!/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
|
|
}
|