Visit Our UNIX and Linux User Community


Condition checking


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Condition checking
# 1  
Old 06-16-2002
Condition checking

Dear all

That's another problem from me, i wanna do a lot of if statement checking for correct input by user, will be prompt input again if the input not meet the requirement defined by If or while statement...

like this one ....

while [ $a != "a1232132" -o $a != "asdfsdaf" ....... \
$a != "basdfd" -o $a != "bj-sdf"..... ]


I know it's less effiency write the program like this if too many compare string occured, can anyone help me find a best way to solve this sort of verification....

thanks in advance!!!
# 2  
Old 06-17-2002
Here is one way...
Code:
#! /usr/bin/sh


done=0

while [ $done -eq 0 ] ; do
        done=1
        echo enter value --
        read val
        case $val in
        111)  echo do 111 thing
              ;;
        222)  echo do 222 thin
              ;;
        333)  echo do 333 thing
              echo do more 333 stuff
              ;;
        *)    done=0
              echo fumble
              ;;
        esac
done

# 3  
Old 06-17-2002
My 2 cents here: I notice that the logical condition "a not equal dhgsf or a not equal hdhdhss or a not equal zxhcgvxhsg (etc)" is ALWAYS TRUE :-)

You probably meant -a (and) instead of -o (or) Smilie
# 4  
Old 06-17-2002
Us frog prince, Yes, that's right, should be use AND (-a) here.

HI Perderabo, you probably misunderstand what I means, ok here is a example:

echo “Please enter item name or ID: “
read name
while [ $name != “name1” -a $name != “name2” -a\ $name != “stock1” $name != “desk” -a ....... ]
# check whether have in store
do
echo “We have no such item!!!”
done
echo “ “

echo “Item name: “ $name
...


the question here is: if there are many many kind of items, obviously you must waster time to write long coding to include all of items you have, therefore any other methods suitable for this sort of problem?
# 5  
Old 06-17-2002
If the list is that huge you might need to go through a text file, as an input. Won't speed up the execution, though.

I can't think about something other than what Perperado already suggested:

ok=0
while [[ $ok -eq 0 ]]
do
echo "Choice? \c" ; read choice
case $choice in
stock1) ok=1;;
desk) ok=1;;
*) ok=0;;
esac
done
echo "Your choice was: $choice"
# 6  
Old 06-17-2002
Your example doesn't make sense. A "while" does not have two sections like that. You can't do stuff between the test and the "do"! It looks like you might mean to use an "if" statement? Also a "while" implies looping until something changes. It look like a legal value will give you an infinite loop. And if the user enters an illegal value, are you just going to give up? Or loop until you get a legal value?

And in any event, if there are, say, 10 strings that you must check for, then you need to check for them all. No way around that. But rather than code a lengthy "if" statement ( or "while" statement), I would go with a "case" statement.
# 7  
Old 06-17-2002
if you'd find it easier to maintain a file of products & check against that, you could do a grep & check the value of $? to see if it is in the file.

eg.

grep -x $name productfile 1>/dev/null 2>&1
if [ $? -eq 0 ]
then echo "item name :" $name
else echo "not found :" $name
fi

the -x option limits the grep to exact matches, that is if productfile contains

a123123
a321321
etc.

the grep will only match "a123123" & would not match a name such as "a123"

Hope this helps.

Previous Thread | Next Thread
Test Your Knowledge in Computers #57
Difficulty: Easy
In a Database Management System (DBMS), the content and the location of the data is defined by the meta data.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Condition checking issue while if

hi, i am using a simple condition end_ct=`sqlplus -s $ORACLE_USER/$ORACLE_PASS@$ORACLE_SID << EOF select description from bravo_statistics where trunc(time_stamp)=trunc(sysdate)-1 and description='END CAT'; EOF` echo $end_ct; echo... (30 Replies)
Discussion started by: lovelysethii
30 Replies

2. Shell Programming and Scripting

Checking for null condition in a UNIX variable

i have this code for i in `cat sql_output.txt` do -- some script commands done sql_output.txt has 1 column with employee_ids If the sql_output.txt is null then the do loop should not execute. How can i implement this. for i in `cat sql_output.txt` If i is null or empty then ... (5 Replies)
Discussion started by: rafa_fed2
5 Replies

3. Shell Programming and Scripting

Condition checking in UNIX

i have a script where i have to find the age of a file, if then echo "dnb file is present for the monthly load" >> $RUNLOG dnb="1" else echo "dnb file has not arrived yet" > $ERRLOG dnb="0" fi i know the file is available so... (3 Replies)
Discussion started by: lovelysethii
3 Replies

4. Shell Programming and Scripting

Checking file existence along with condition

Hi am trying to write a script which find the existence of a file from a find command output and perform a task if the file exists. Help me out with the correct syntax . Am trying with the following one but unable to get the output. if then <some tasks> else echo "file not exists" fi (5 Replies)
Discussion started by: rogerben
5 Replies

5. Shell Programming and Scripting

Multiple condition checking in bash

Hi All, I am trying to check if two variables have value assigned to it. i am doing it like if ] then echo "Please specify either single hostname or host file for the report" usage exit fi But its not working for it.Even i specify values for both variables it dont go... (6 Replies)
Discussion started by: kailash19
6 Replies

6. Shell Programming and Scripting

create separate file after checking condition..

Problem : I want to create a separate file for country list if condition is true. Please help. ***************************************************** Input file: SV-INCR-139302-365540488-201104090934.sqllog SV-INCR-1082-552793184-201104040805.sqllog SV-INCR-1077-855045741-201104040805.sqllog... (4 Replies)
Discussion started by: humaemo
4 Replies

7. Shell Programming and Scripting

Cutting specific line of a file by checking condition

testfile.csv 0","1125209",,"689202CBx18888",,"49",,,"NONMC",,,,,"01112010",,,,,,,"MTM- "1","",,"689202ABx19005",,"49",,,"NONMC",,,,,"01072010",,,,,,,"MTM- testfile.csv looks like above format if the second column is null then get 23rd column and store in a different varible .. add all the... (1 Reply)
Discussion started by: mgant
1 Replies

8. Shell Programming and Scripting

Unzip file By checking condition.

Hi.. Gurus I Have a list of .zip files in a directory. I want to check whether each .zip file having some particular file or not (say .jsp) if it's having .Jsp file then create a directory as per the .zip file and extract the content to that directory except the .jsp file, If .zip not having... (3 Replies)
Discussion started by: posix
3 Replies

9. Shell Programming and Scripting

sed solution for condition checking

Hi all , Recently i came across this in FAQ's. I have a file cat rem.txt sreedhar 20 sreedhar 10 sreedhar 15 sreedhar 18 sreedhar 16 sreedhar 30 I have to replace sreedhar with "Sridhar" if the second parameter is > 18. I need to do it in "sed" only. I am wondering how this... (4 Replies)
Discussion started by: panyam
4 Replies

10. Shell Programming and Scripting

Checking condition inside the loop

Hi all, I have one clarification i am using the loop which will process for each record .suppose there is f ailure in the first record it need to send mail and process the next .my code: defcount=`cat <filename>|wc -l` while ] do if <some condiotion> then echo "mail" fi done so... (1 Reply)
Discussion started by: ithirak17
1 Replies

Featured Tech Videos