#!/usr/bin/env bash # From http://unix.stackexchange.com/questions/43340/how-to-introduce-timeout-for-shell-scripting # Executes command with a timeout # Params: # $1 timeout in seconds # $2 command # Returns 1 if timed out 0 otherwise timeout() { time=$1 # start the command in a subshell to avoid problem with pipes # (spawn accepts one command) command="/bin/sh -c \"$2\"" expect -c "set echo \"-noecho\"; set timeout $time; spawn -noecho $command; expect timeout { exit 1 } eof { exit 0 }" if [ $? = 1 ] ; then echo "Timeout after ${time} seconds" fi } declare -a extraargs for arg in "$@" do extraargs=("${extraargs[@]}" "'$arg'") done timeout 60 "idris ${extraargs[*]} --nocolour reg039.idr --exec go" rm -f reg039 *.ibc