Você precisa de algo assim:
#!/usr/bin/env sh
if [ -t 1 ]
then
interactive=1
else
interactive=0
fi
if [ "$interactive" -eq 1 ]
then
printf "interactive\n"
while true
do
printf "Rm directory? "
read -r reply
if [ "$reply" = "y" ]
then
printf "directory will be removed\n"
break
elif [ "$reply" = "n" ]
then
printf "directory will not be removed\n"
break
else
printf "Uknown reply - it must be either y or n\n"
fi
done
else
printf "non interactive\n"
fi
O script acima é POSIX -compliant e verificado por erros com shellcheck . Ele verificará se ele é executado no modo interactive ou non interactive , possivelmente via cron e agirá de acordo. Eu testei com bash , dash , Busybox ash e FreeBSD .