#!/bin/bash - # # Use bash in the coprocess but turn off buffering # process='stdbuf -i0 -o0 -e0 bash' # # Indexed array of bash commands # declare -a com=('date +%F' 'whoami' 'id' 'echo "$BASH_VERSION"' 'printf "Hello\nWorld\n"') # # Count commands in the array # n="${#com[@]}" # # Start the coprocess # coproc child { $process; } # # Loop though the commands # i=0 while [[ $i -lt $n ]]; do # Show the command echo "\$ ${com[$i]}" # Send to coprocess echo "${com[$i]}" >&"${child[1]}" # Read a line from the coprocess read -u "${child[0]}" -r results # Show the line received echo "$results" ((i++)) done # # Send an EOF to the coprocess (if needed) # if [[ -v child_PID ]]; then echo "-- End --" exec {child[1]}>&- # Flush any remaining results cat <&"${child[0]}" fi