41 lines
		
	
	
		
			692 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			41 lines
		
	
	
		
			692 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | #!/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 "$@" |