How to add a Y/N option?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to add a Y/N option?
# 1  
Old 04-08-2016
How to add a Y/N option?

I want to be able to add to any script that gives the option to continue or not, after the the first loop thru and to keep giving you the option after the user answers "Y" then does their thing then gives that option again once done. I've been seeing examples online on how to do it, but not for it to keep looping through when you keep saying "Y".
# 2  
Old 04-08-2016
Perhaps you want something like:
Code:
#!/bin/ksh
printf 'Do you want to start looping (Y<enter> to continue; anything else to stop)?: '
read response
while [ "$response" = "Y" ]
do	printf '\nOK\n'
	# Do whatever you want to do here...
	printf 'Do you want to go again (Y<enter> to continue; anything else to stop)?: '
	read response
done
echo 'Goodbye.'

The above should work with any POSIX-conforming shell. Some shells (including ksh provide shortcuts to combine the read and printf command pairs shown in this script into a single read call, but those extensions vary from shell to shell and shell release to shell release.
# 3  
Old 04-09-2016
Here is two examples. Also
Code:
read -p

is usable.

Using read -n 1.
Code:
#!/bin/ksh
# bash/ksh93/zsh/... but not dash (=posix)

# if read key ENTER, bash return newline and ksh return carriage return
cr=$'\r'  # ENTER key ksh
while printf "Continue:Y\b"
      read -n 1 response
      printf "\r                  \n"
      case "$response" in
                $cr|Y|y|"") response="Y" ;; # default = ENTER
                n|N) reponse="N" ;;
                *) response="N" ;;
      esac
      [ "$response" = "Y" ]
do
                echo "Do ..."
                date
                echo "..."
done

echo 'Goodbye.'

Using dd = take dump from stdin, 1 char.
Code:
# keypressed, read 1 char from stdin using dd
# works using any sh-shell
readkbd() {
  stty -icanon -echo
  dd bs=1 count=1 2>/dev/null
  stty icanon echo
}

while printf "Continue:Y\b"
      response=$(readkbd)
      printf "\r                  \n"
      case "$response" in
                Y|y|"") response="Y" ;; # default = ENTER
                n|N) reponse="N" ;;
                *) response="N" ;;
      esac
      [ "$response" = "Y" ]
do
                echo "Do ..."
                date
                echo "..."
done

echo 'Goodbye.'

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Add option to fstab

I need as script (awk/sed?) to add noatime option to fstab. It should append ,noatime to whatever is in column 4 if noatime isn't already there, leaving comments alone. input: # /etc/fstab # Created by anaconda on Mon Oct 31 20:44:41 2011 # # Accessible filesystems, by reference, are... (5 Replies)
Discussion started by: pblumenthal
5 Replies

2. Ubuntu

Add Option To Right Menu

hey all, I already installed nautilus-actions now , I want to add "print path" script(option) to the right context menu!.. I did : http://img853.imageshack.us/img853/6973/59818245.png http://img847.imageshack.us/img847/8758/37217230.png the script print located in... (2 Replies)
Discussion started by: eawedat
2 Replies

3. Shell Programming and Scripting

Interactive script to give user option of what text to add

Hello all, I have created a script that will remove the first two lines of one text file (body.txt) and then add the text from a different text file (header.txt) directly to the beginning of the freshly modified body.txt file. It is as follows: #!/bin/bash ## This script will add a header... (2 Replies)
Discussion started by: marcozd
2 Replies

4. Shell Programming and Scripting

recently introduced to the newer option for find...does an older option exist?

To find all the files in your home directory that have been edited in some way since the last tar file, use this command: find . -newer backup.tar.gz Is anyone familiar with an older solution? looking to identify files older then 15mins across several directories. thanks, manny (2 Replies)
Discussion started by: mr_manny
2 Replies

5. Shell Programming and Scripting

How do I add the option to change the path in a menu?

How do I add the option to change the path in a menu? I have this script. The user chooses a number and had the option of doing something, looking for log files etc. There is a possibility they might want to look at a different path other than what I have given them such as... (2 Replies)
Discussion started by: taekwondo
2 Replies

6. UNIX for Dummies Questions & Answers

How to add the landscape option...

to an existing print que? (1 Reply)
Discussion started by: NycUnxer
1 Replies

7. Shell Programming and Scripting

option followed by : taking next option if argument missing with getopts

Hi all, I am parsing command line options using getopts. The problem is that mandatory argument options following ":" is taking next option as argument if it is not followed by any argument. Below is the script: while getopts :hd:t:s:l:p:f: opt do case "$opt" in -h|-\?)... (2 Replies)
Discussion started by: gurukottur
2 Replies

8. Shell Programming and Scripting

trying to add an option to view before executing?

I am very new to scripting. I have the following script: for i in `ls -1 | grep $1 | grep -v $2` do x=`echo $i | sed 's/\.New/\.Old/g'` echo mv $i DONE/$x done This is taking files from the directory I am in and changing the name from .New to .Old and then echoing the command to move... (2 Replies)
Discussion started by: llsmr777
2 Replies

9. Windows & DOS: Issues & Discussions

How to add Win2000, Win Me option to Lilo menu?

Hi All, I have installed RH Linux 7.1, windows 2000 and windows ME in the same machine. There are two booting menu: Lilo: Linux Dos Dos : Windows2000 WindowsME If I want to use windowME, I need to boot lilo and choose dos and final choose windows ME. Have any... (3 Replies)
Discussion started by: wilsonchan1000
3 Replies
Login or Register to Ask a Question