Using wildcards in "if" statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using wildcards in "if" statement
# 1  
Old 01-11-2010
Using wildcards in "if" statement

hey guys, what i am doing is that i would like the program to check if there was anything inputted. If nothing is imputed, it is suppose to display a message.

Code:
 
echo -n "Enter Author:"
read Author
#echo -n "Enter Title:"
#read Title
 
if [[$Author = [a-z] ] ; then
echo "you enter something"
else 
echo " you enter nothing"
fi

when i tried entering a letter "t" , but the error message i got was
Code:
./Search: line 29: [[a: command not found

I read up about it , but i am still confused. Some tutorials said that i an unable to the wildcard [] with an "if" statement and i can only use case. is that true? hope sombody can clarify this or help me in what is wrong with the coding.
# 2  
Old 01-11-2010
You've got 3 different errors in total.
  1. The test operator [] needs to be surrounded by whitespaces on both sides
  2. You're opening one more bracket than you're closing
  3. The tutorials are right, the range can only be used in a case. You could write your if-statement like this:
    Code:
    if echo $Author | grep -q '[a-z]'; then

# 3  
Old 01-11-2010
It should work with shells that support the double brackets though:

Code:
$ Author=b ; if [[ $Author = [a-z] ]]; then echo hello; fi
hello

If you are looking to see if the input consists only of lower case standard characters:
Code:
if ! [[ $Author = *[^a-z]* ]]; then 
  echo hello
fi

For Posix compliancy you would need to use the case statement though:
Code:
case $Author in 
  *[^a-z]*) echo wrong ;;
         *) echo right ;; 
esac

To test whether anything is input:

Code:
if [ -n "$Author" ]; then
  echo not empty
fi

# 4  
Old 01-11-2010
Plan B: check the length of the input string

Code:
echo -n "Enter Author: " ; read Author
if [ ${#Author} -le 3 ]
then
  echo "Full name, please!"
fi

# 5  
Old 01-11-2010
dr.house , when i tried out
Code:
if [ -n "$Author" ]; then
  echo not empty
fi

i got an error message which said.
Code:
[-n: command not found

what does it means? is it not reading the -n message?
# 6  
Old 01-11-2010
Quote:
Originally Posted by gregarion
dr.house , when i tried out
[...]i got an error message which said.
Code:
[-n: command not found

what does it means? is it not reading the -n message?
It means that you still don't have a space between the [ and -n ...
# 7  
Old 01-11-2010
okay so the -n command is to check if anything is typed in right?
the problem i having is if i have 2 input areas , Title and Author , and i want to do a search based on any two or both , how do i do it? i tried

Code:
f [  -n "$Author" ] | [  -n "$Title" ] ; then
  echo "you enter something"
else 
echo " you enter nothing"
fi

but it is not giving me the input i need. what i need it to do is, if nothing is being typed in "title", it will then check if "Author" has an input. or the other way round. Anybody have a clue on how i can work this out?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

2. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

3. Shell Programming and Scripting

"if" statement based off "grep"

Hello, I am somewhat new to Linux/Unix. I am currently working on a shell script that is suppose to cat a file, grep the same file for a certain line, if that line is found save the file in a different location, else remove the file. This is a rough example of what I want. $Dating = False... (13 Replies)
Discussion started by: Amzerik
13 Replies

4. UNIX for Dummies Questions & Answers

What is the meaning of "-s" option in "if" statement?

Hi Guys, I'm sorry but I can't find answer for this, what is the meaning of -s option in "if" statement on unix scipting. Please see sample below: opath=/home/output for i in N1 N2 N3 N4 do echo $i if then grep $i $opath/N5_CRAI > $opath/N5_$i.crai chmod 777 $opath/N5_$i.crai ... (7 Replies)
Discussion started by: rymnd_12345
7 Replies

5. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

6. Shell Programming and Scripting

What "-a" operator means in "if" statement

Hi I am trying to figure out what the following line does, I work in ksh88: ] && LIST="$big $LIST" Not sure what "-a" means in that case. Thanks a lot for any advice -A (1 Reply)
Discussion started by: aoussenko
1 Replies

7. Red Hat

"if" and "then" statement is not working in RedHat

Dear experts, I'm trying to write a script to calculate the usage of Log Archive in a directory, so if it gets to a point where the directory size is 60%, then send out an FYI.. email. So if then it reaches to 80%, move the logs from that directory. I have written the script as follow but... (10 Replies)
Discussion started by: Afi_Linux
10 Replies

8. Shell Programming and Scripting

wildcards in "if then" statement

Hello, I would like to use a simple "if then" test to check if an argument to a command begins with "http://" as follows: if http://* ]]; then command fi but the wildcard just seems to be ignored, ie., it will only execute the command if the expression is strictly "http://" with... (5 Replies)
Discussion started by: Allasso
5 Replies

9. Shell Programming and Scripting

wildcards in "if then" statement

Hello, I would like to use a simple "if then" test to check if an argument to a command begins with "http://" as follows: if http://* ]; then command fi but the wildcard just seems to be ignored, ie., it will only execute the command if the expression is strictly "http://" with nothing... (0 Replies)
Discussion started by: Allasso
0 Replies

10. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question