PS3 select when wrong input given


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting PS3 select when wrong input given
# 1  
Old 11-09-2012
PS3 select when wrong input given

Hi All

I am using the below code to chose a file to view :

Code:
PS3="Select file to view : "
select FILE in `ls`  QUIT
do
   if [ -e $FILE ] ; then
     clear
     cat  $FILE
  else
  break
  fi
  REPLY=''
done

Everything works fine as long as I am giving the correct choice .

But when i give a wrong option it hangs .
How to include a check so that if a wrong option is entered , throw a message saying to enter a valid choice.
# 2  
Old 11-09-2012
Code:
PS3="Select file to view : "
select FILE in `ls`  QUIT
do
   if [ -z "$FILE" ]
   then
    echo INVALID INPUT
   else
    if [ -e "$FILE" ]
    then
     clear
     cat  "$FILE"
    else
     break
    fi
   fi
done

This User Gave Thanks to elixir_sinari For This Post:
# 3  
Old 11-09-2012
Thanks for the above solution .
Another tip I want for removing the chosen option to not appear in the options.
Say i chose 1) filname1 . I dont want it to appear again.

I have tried like below (HP UNIX) but cannot get it to work:

Code:
PS3="Enter corresponding number and hit enter:"
select DIR in `cat mylist`  QUIT
do
if [ -z "$DIR" ]
   then
   echo "INVALID INPUT"
else
if [ -d "$mysource/$DIR" ]; then
echo "Copying $mysource/$DIR ................................"
             cp -rp $mysource/$DIR $mydest/
 
                  mv -f mylist mylist1
                  perl -ne "print unless /\b$DIR\b/" mylist1 > mylist
               
else
     break
  fi
  fi
  REPLY=''
done


Last edited by ningy; 11-09-2012 at 05:31 AM..
# 4  
Old 11-09-2012
I don't think this is possible with select.
With a construct such as:
Code:
select DIR in `cat mylist`  QUIT
do
.
.
.
done

changing the file mylist inside the loop will not work at all. The shell has already done command substitution for cat mylist and substituted the output of that command in place of `cat mylist`, before running the other commands in the loop. So, the argument list to select is a static one.

Last edited by elixir_sinari; 11-09-2012 at 06:49 AM..
This User Gave Thanks to elixir_sinari For This Post:
# 5  
Old 11-09-2012
Thanks a lot Batman. Smilie
I will look for some workaround.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with 'select' for menu input

A lot of my scripting makes use of the 'select' command to create menu driven input. A typical example of how I use it is as: somevar='' PS3='Select one: ' while ]; do select somevar in $(sqlplus -s $dbuser/$dbpw@mydb <<EOF set echo off feedback off verify off... (7 Replies)
Discussion started by: edstevens
7 Replies

2. Shell Programming and Scripting

Script to select the rows from the feed file based on the input value provided

Hi Folks, I have the below feed file named abc1.txt in which you can see there is a title and below is the respective values in the rows and it is completely pipe delimited file ,. ... (3 Replies)
Discussion started by: punpun66
3 Replies

3. Shell Programming and Scripting

Select command help with blank input value

I have a select menu driven script using a case statment and cannot control what happens after a user's input is just <ENTER> or the <SPACEBAR>+<ENTER>. I want it to just hit the "MAIN" function and not redraw the options. I've look everywhere for the answer and am at a loss. Here's the code:... (4 Replies)
Discussion started by: ambroze
4 Replies

4. Shell Programming and Scripting

Is is possible to pass multiple entries in PS3 select ?

PS3="Enter corresponding number and hit enter:" select DIR in `cat mylist` QUIT do if then echo "INVALID INPUT" else if ; then my commands ..... else break fi fi REPLY='' done The above will return something like below : Select from the list of... (4 Replies)
Discussion started by: ningy
4 Replies

5. Shell Programming and Scripting

PS3 and SELECT, is it possible to put a line break?

Hi all, Before I give up on using SELECT for my first attempt at creating a menu driven script, can anyone please advise if it is possible to include a line break for PS3, I've tried putting in a \n and it does not work. Tried for both bash and ksh and both gives the same result. Preference... (3 Replies)
Discussion started by: newbie_01
3 Replies

6. Shell Programming and Scripting

how to test input variable is a string in a select loop

Okay -- I hope I ask this correctly. I'm working on my little shell script to write vendor names and aliases to files from user input. If a user choose to add to a file, he can do that as well. I'm using a select loop for this function to list all the possible files the user can choose from.... (7 Replies)
Discussion started by: Straitsfan
7 Replies

7. UNIX for Dummies Questions & Answers

AWK command giving wrong input

Hi all, I have a problem with qwk command. i have to check process status and for that i am using command prstat -mvL 1 1 and it gives me the entire output but when i use this command with awk like this: prstat -mvL 1 1 | awk -F" " '{print $1,$15}' to get first and 15th arguments. ... (3 Replies)
Discussion started by: usha rao
3 Replies

8. Shell Programming and Scripting

extract/select pattern from input

Hey, examples of the input (text line): /bla/blMOasdn234.adanif24/blabla.rar /bla/blMOasdn234.adanif24/blabla23124.bin /bla/bla/bla/bla/bla/bla.bin and what I need to do is extract/select only the dir path so the output would be: /bla/blMOasdn234.adanif24/ /bla/blMOasdn234.adanif24/... (4 Replies)
Discussion started by: TehOne
4 Replies

9. Shell Programming and Scripting

select datas from an input file

I have a file containing a list of references and I want to run a script that will make the same action for each reference. The input file changes every hour, it's why I want to use a script that can read in a file, record by record, and run a specific action for the reference readed. Thanks... (1 Reply)
Discussion started by: dde
1 Replies
Login or Register to Ask a Question