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
 | 
						|
}
 |