Function Returns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Function Returns
# 8  
Old 08-12-2016
...or use regex(bash only)...

Code:
if [[ "$zone" =~ ^([4567]|10|11|20|21|23|25)$ ]]; then
        zonecheck=1
else
        echo "That's not a region"
fi
#
# Alternate, not so efficient way in ksh 
# if echo "$zone" | grep -qE '^([4567]|10|11|20|21|23|25)$' ; then


Last edited by stomp; 08-12-2016 at 07:36 PM.. Reason: Aded parenthesis/quotes
# 9  
Old 08-12-2016
The if statement:
Code:
if [[ $zone =~ ^[4567]|10|11|20|21|23|25$ ]]; then
        zonecheck=1
else
        echo "That's not a region\n"
fi

does not work in bash. The 1st anchor only anchors the 1st alternative in that RE and the last anchor only anchors the last alternative in that RE. So, with both bash and 1993 or later versions of ksh, that if statement will accept zones 79, 125, 110, 239, and lots of others that should not be accepted. If you use the same ERE that you used in the grep -E command, both recent versions of bash and 1993 or later versions of ksh give the correct results for all expansions of $zone that do not contain any embedded whitespace characters. A test that would work in either of those shells for any settings of the zone variable would be:
Code:
if [[ "$zone" =~ ^([4567]|10|11|20|21|23|25)$ ]]; then
        zonecheck=1
else
        printf "That's not a region\n\n"
fi

Note that depending on operating systems and shell options, the command:
Code:
echo "That's not a region\n"

will either print the string That's not a region\n followed by a single <newline> character or the string That's not a region followed by two <newline> characters. I used printf instead of echo to be sure that you get the output I think you wanted no matter which operating system, version of the shell, and shell options you're using.
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Exit always returns 0

This returns 0 even when it does not delete any files. Is it because -print returns 0? RETVAL=$? Docs_Backups=/media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Documents_Backups/ Scripts_Backups=/media/andy/MAXTOR_SDB1/Ubuntu_Mate_18.04/Script_Backups/ # create some old files #touch -d 20120101... (4 Replies)
Discussion started by: drew77
4 Replies

2. Shell Programming and Scripting

Help in function returns value

Hi, I need to return a value from the function. the value will be the output from cat command which uses random fucntion. #!/bin/ksh hello() { var1=$(`cat /dev/urandom| tr -dc 'a-zA-Z0-9-!%&()*+,-/:;<=>?_'|fold -w 10 | head -n 1`) echo "value is" var1 return var1 } hello var=$?... (2 Replies)
Discussion started by: Nandy
2 Replies

3. Shell Programming and Scripting

Function returns a value but cannot be stored in other variable

I need help to store the value returned from the function to one variable and then use that variable. PREVIOUS_DATE_FUNCTION() { date '+%m %d %Y' | { read MONTH DAY YEAR DAY=`expr "$DAY" - 1` case "$DAY" in 0) MONTH=`expr "$MONTH" - 1` case... (1 Reply)
Discussion started by: aroragaurav.84
1 Replies

4. Shell Programming and Scripting

Calculation returns no value

#/bin/sh ..... #convert memory to MB let "mmsize_a= ($mmsize)/256" let "mminuse_a= ($mminuse)/256" let "mmfree_a= ($mmsize_a -$mminuse_a)" let "mmfreepercent= (($mmfree_a)/($mmsize_a))*100" # #format output echo "\n\n######################" >>$sndFile echo "\n$sysName Total Memory usage"... (3 Replies)
Discussion started by: Daniel Gate
3 Replies

5. UNIX for Dummies Questions & Answers

dlsym() returns 0 for an existing function

Sometimes I observe this in gdb: (gdb) br my_function Breakpoint .. at 0x...: file ..., line ... i.e., "my_function" does exist in the current executable. however, dlsym does not find it: (gdb) p dlsym(0,"my_function") $6 = 0 This is a C program; dlsym does find other defined functions and... (2 Replies)
Discussion started by: sds
2 Replies

6. Shell Programming and Scripting

Grep returns nothing

Hi all, I am trying to grep a .txt file for a word. When I hit enter, it returns back to $ The file is 4155402 in size and is named in this way: *_eveningtimes_done_log.txt I use this command, being in the same directory as the file: grep -i "invalid" *_eveningtimes_done_log.txt ... (16 Replies)
Discussion started by: DallasT
16 Replies

7. Shell Programming and Scripting

Function returns wrong values - solved

Hi I have a small function which returns a wrong value. The function tries to make a connection to oracle database and tries to get the open_mode of the database in the variable status. However when a database is down the value of the status column is set to READWRITE i am not sure why. I... (0 Replies)
Discussion started by: xiamin
0 Replies

8. UNIX for Dummies Questions & Answers

Grep without returns...

Is there a command where I can pipe my grep into it and it will output it with spaces rather than returns? Example I want to turn prompt$ grep blah file blah blah into this prompt$ grep blah file | someCommand blah blah (1 Reply)
Discussion started by: mrwatkin
1 Replies

9. Shell Programming and Scripting

function returns string

Can I create a function to return non-interger value in shell script? for example, function getcommand () { echo "read command" read command echo $command } command=$(getcommand) I tried to do something as above. The statement echo "read command" does not show up. ... (5 Replies)
Discussion started by: lalelle
5 Replies
Login or Register to Ask a Question