41 lines
		
	
	
		
			692 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			692 B
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
#
 | 
						|
# Imitate watch from linux
 | 
						|
set -euo pipefail
 | 
						|
IFS=$'\n\t'
 | 
						|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
 | 
						|
 | 
						|
############## Setup #########################
 | 
						|
 | 
						|
function cleanup {
 | 
						|
    switch_to_main_screen
 | 
						|
}
 | 
						|
for sig in EXIT INT QUIT HUP TERM; do
 | 
						|
  trap "set +e; cleanup; exit" "$sig"
 | 
						|
done
 | 
						|
 | 
						|
############## Program #########################
 | 
						|
 | 
						|
function main {
 | 
						|
    switch_to_alt_screen
 | 
						|
    while true; do
 | 
						|
        local output=$("$@")
 | 
						|
        clear
 | 
						|
        cat <<<"$output"
 | 
						|
        sleep 2
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
function switch_to_alt_screen {
 | 
						|
    # tput smcup
 | 
						|
    echo -e "\e[?1049h"
 | 
						|
    clear
 | 
						|
}
 | 
						|
 | 
						|
function switch_to_main_screen {
 | 
						|
    # tput rmcup
 | 
						|
    echo -e "\e[?1049l"
 | 
						|
}
 | 
						|
 | 
						|
main "$@"
 |