#!/bin/bash function prefix_time(){ while read LINE; do echo "["$(date)"] "$LINE done } function one_token_per_line(){ for L in $1; do echo $L done } function choose_one(){ if [ $# -eq 0 ]; then echo missing argument 1>&2 exit 1 fi if [ "$1" = "-" ]; then touch internal_pipe CNT=0 tee internal_pipe | while read LINE; do CNT=$(($CNT+1)) echo " "$CNT" > "$LINE done read -p "enter a number: " -u 1 NUM CNT=$(cat internal_pipe | wc -l) if [ "" = $NUM ]; then echo empty input; exit 1; fi if [ 0 -ge $NUM ]; then echo too small; exit 1; fi if [ $CNT -lt $NUM ]; then echo too large; exit 1; fi cat internal_pipe | head -n +$NUM | tail -n +$NUM rm internal_pipe else cat $1 | choose_one - fi } function block_devices(){ #lsblk -fPpo NAME,FSTYPE,LABEL,UUID,FSAVAIL,MOUNTPOINT lsblk -frpno NAME } function foo(){ while read LINE; do ( export $LINE echo "> "$NAME ) done }