string test in IF statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting string test in IF statement
# 1  
Old 03-03-2010
string test in IF statement

How do I test multiple words in a string test like below:

Code:
if [[ $TBS = (SYSTEM|SYSAUX|USERS|TOOLS) ]]
then
   print "You entered $TBS name.\n"
else
   print "You entered an incorrect response.\n"
fi


This test does not work. I have tried different syntax versions. How does this work? And is there a better way to do it?

thanks.

Last edited by vgersh99; 03-03-2010 at 05:34 PM..
# 2  
Old 03-03-2010
in 'man ksh' (for example) search for the 'File Name Generation' chapter - it should explain the specifics.
Code:
if [[ $TBS = ?(SYSTEM|SYSAUX|USERS|TOOLS) ]]; then

Also please use code tags when posting code/data samples - you'll improve the chances of your posts being looked at/answered.
# 3  
Old 03-03-2010
in bash...

Code:
if [ "$TBS" == "SYSTEM" -o "$TBS" == "SYSAUX" -o "$TBS" == "USERS" -o "$TBS" == "TOOLS" ];then

# 4  
Old 03-04-2010
bash accepts this in the case statement
Code:
case $TBS in
   SYSTEM|SYSAUX|USERS|TOOLS)    do_something ;;
esac

# 5  
Old 03-04-2010
In bash the "or" operator can be used in this way also
Code:
var=8
if [[ $var -eq 5 || $var -eq 7 ]]
then
        echo "OK"
else
        echo "Not ok"
fi

# 6  
Old 03-07-2010
Case is very nice in every sh (sh, ksh, dash, bash, zsh, ...) to make string pattern
testing.
Code:
case "$TBS" in
   SYSTEM|SYSAUX|USERS|TOOLS)    print "You entered $TBS name.\n"
                                                    ;;
   *) print "You entered an incorrect response."
       ;;
esac

Why "$TBS" ? If TBS is empty, you get error if not "". Usually it's safety to use always " " with variable. String length 0 / null string.
# 7  
Old 03-07-2010
Quote:
Originally Posted by kshji
Code:
case "$TBS" in
   SYSTEM|SYSAUX|USERS|TOOLS)    print "You entered $TBS name.\n"
                                                    ;;
   *) print "You entered an incorrect response."
       ;;
esac

Why "$TBS" ? If TBS is empty, you get error if not "". Usually it's safety to use always " " with variable. String length 0 / null string.

This is one of the few instances where it is never necessary to quote the variable; case is a shell keyword, not a builtin command, so it doesn't parse the line as if it were a command.

Even if $TBS could be empty, there's no need to quote it.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

If statement test against number range [0-9]

Is it possible to test against a varible within a ranges in a if statement. ex. if ];then echo "not in range" else echo "number within range" fi (8 Replies)
Discussion started by: leemalloy
8 Replies

2. Shell Programming and Scripting

string test

How do I use bash to test if a line begins with a random number of spaces followed by a letter? (1 Reply)
Discussion started by: locoroco
1 Replies

3. Shell Programming and Scripting

Help with test statement

Hello, I am trying to build a test statement but I can't make it work I want to rearrange some fields, so if my "$cfg" variable contains a string ending with .log (*.log) I want to move it in another field. Any help will be much appreciated! Thank you Shell:sh if then log="${cfg}"... (9 Replies)
Discussion started by: drbiloukos
9 Replies

4. Shell Programming and Scripting

How to check weather a string is like test* or test* ot *test* in if condition

How to check weather a string is like test* or test* ot *test* in if condition (5 Replies)
Discussion started by: johnjerome
5 Replies

5. Shell Programming and Scripting

Perl - automating if statement test

Hello all, I'm trying to automate an if statement in my Perl script. The script opens an input file for reading, checks each line in the file for a particular substring, and if it finds the substring, writes it to an output file. There are approximately 200 different input files. Each has... (3 Replies)
Discussion started by: Galt
3 Replies

6. Shell Programming and Scripting

Test on string containing spacewhile test 1 -eq 1 do read a $a if test $a = quitC then break fi d

This is the code: while test 1 -eq 1 do read a $a if test $a = stop then break fi done I read a command on every loop an execute it. I check if the string equals the word stop to end the loop,but it say that I gave too many arguments to test. For example echo hello. Now the... (1 Reply)
Discussion started by: Max89
1 Replies

7. UNIX for Dummies Questions & Answers

if test statement

Can you use an if statement after an else? example if then echo "word" else if then echo "word" (1 Reply)
Discussion started by: skooly5
1 Replies

8. Shell Programming and Scripting

Using grep in a test/if statement

Okay, well this is more or less my first attempt at writing a shell script. Anyways, here's my code: cd ${PATH} if then rm ${FILE} ./anotherScript else exit 1 fi exit 1 Anyways, it's a pretty simple script that is supposed to search for the... (4 Replies)
Discussion started by: cbo0485
4 Replies

9. UNIX for Dummies Questions & Answers

test a string...

Hi! I'm using echo $string | grep "" -c to test in a script if a string is a number and it seems to work. But how can i find, for example, if a string is a four figures number ? Thanks to all! (2 Replies)
Discussion started by: Kaminski
2 Replies

10. UNIX for Dummies Questions & Answers

string test?

hey guys- what is the syntax for a string test to verify that a user has entered a 6 digit numeric? Thanks for your help in advance! Todd (9 Replies)
Discussion started by: hedrict
9 Replies
Login or Register to Ask a Question