If statement help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If statement help
# 1  
Old 07-31-2013
If statement help

I am new to Unix and have been given the task of modifying a current script. Most of the programming I do is Oracle based, not unix.

That being said when I run my current script i get the following (not sure if this is an actual error or if it is just being informative)

Code:
./test_cron.s[56]: cdev:  not found
./test_cron.s[60]: cdev:  not found

The if statement is as follows, first line is 56:
Code:
if ${ORACLE_SID} -eq "csdb"
then
  export email_recipient="CronMgmtTeam" 
else
  if ${ORACLE_SID} -eq "cstg" 
  then
    export email_recipient="qa"
  else
    export email_recipient="me"
  fi
fi

my intention is that if the parameter is not one of the two specified (csdb and cstg) then I will become the email recipient, I am passing the parameter cdev hence the "errors". There is another error that is preventing this script to complete which I believe is a permissions issue so I cant really tell if this is working as expected yet.


Sorry for the newb question, thanks in advance for any insight.

Last edited by Scott; 07-31-2013 at 10:08 AM.. Reason: Please use code tags
# 2  
Old 07-31-2013
It's just the syntax of your if statements.
Code:
if [[ ${ORACLE_SID} = "csdb" ]]
then
  export email_recipient="CronMgmtTeam"
elif [[ ${ORACLE_SID} = "cstg" ]]
then
  export email_recipient="qa"
else
  export email_recipient="me"
fi


Last edited by Scott; 07-31-2013 at 10:17 AM.. Reason: = not -eq
This User Gave Thanks to Scott For This Post:
# 3  
Old 07-31-2013
Quote:
Originally Posted by Scott
It's just the syntax of your if statements.
Code:
if [[ ${ORACLE_SID} = "csdb" ]]
then
  export email_recipient="CronMgmtTeam"
elif [[ ${ORACLE_SID} = "cstg" ]]
then
  export email_recipient="qa"
else
  export email_recipient="me"
fi

I also had to change the -eq to =, seems to be working now, thanks for the help. Now for some other issues to deal with Smilie
# 4  
Old 08-02-2013
if is only command which test command exit code.
Code:
if commandline
then # if commandline exit status is 0
        do_something
else  # if commandline exit status is not 0
        do_some
fi

Often you use if together with test command which you can write using command test or [.
Or
A conditional expression is used with the [[ compound command to test attributes.
-eq is arithmetic comparisons. With strings == and != is better operators.

Add "" round the variable. Why ? If variable is not set, then you get error, but if it is inside "", then you have string which length is always something, sometimes 0. Here is example where use test cond, not [[
Code:
if [ "$ORACLE_SID" = "csdb" ]
then
  export email_recipient="CronMgmtTeam"
elif [ "$ORACLE_SID" = "cstg" ]
then
  export email_recipient="qa"
else
  export email_recipient="me"
fi

Also setting always default value before testing, you need less if-then-else branches.
Code:
email_recipient="me"
export email_recipient
# after that 3 version:
# ver1
if [ "$ORACLE_SID" = "csdb" ]
then
    email_recipient="CronMgmtTeam"
elif [ "$ORACLE_SID" = "cstg" ]
then
  email_recipient="qa"
fi
# ver 2
if [ "$ORACLE_SID" = "csdb" ] ; then
    email_recipient="CronMgmtTeam"
fi
if [ "$ORACLE_SID" = "cstg" ] ; then
    email_recipient="qa"
fi
# ver3
[ "$ORACLE_SID" = "csdb" ]  && email_recipient="CronMgmtTeam"
[ "$ORACLE_SID" = "cstg" ] && email_recipient="qa"

I like to use case in this kind of testing (lot of branches), so nice to read. Case is powerful for pattern testing.
Code:
export email_recipient
case "$ORACLE_SID" in
         csdb) email_recipient="CronMgmtTeam" ;;
         cstg) email_recipient="qa" ;;
         *) email_recipient="me" ;;
esac

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert Update statement into Insert statement in UNIX using awk, sed....

Hi folks, I have a scenario to convert the update statements into insert statements using shell script (awk, sed...) or in database using regex. I have a bunch of update statements with all columns in a file which I need to convert into insert statements. UPDATE TABLE_A SET COL1=1 WHERE... (0 Replies)
Discussion started by: dev123
0 Replies

2. Shell Programming and Scripting

If statement

Hi, I have this code here. Its suppose to do something when certain condition is met, I'm pretty sure at least one of the condition will be meet somewhere in the loop but it always go to else part of the script. Is something wrong on this script? age_list=`tar -tvf /home/dir/$tarfile... (4 Replies)
Discussion started by: erin00
4 Replies

3. Shell Programming and Scripting

Statement

${PFILE}.backupfile Please tell me what the above statement means? (1 Reply)
Discussion started by: lg123
1 Replies

4. Shell Programming and Scripting

If statement help

I'm trying to create a script that would allow me to identify the sucessful removal of a file. Here's what i put together so far, let me know if it's correct or not. FILE_NAME="cactus.dat" FILE_FIND='find / -name $FILE_NAME' if ;then echo "cactus.dat was not removed successfully" ... (3 Replies)
Discussion started by: sdpinoy
3 Replies

5. UNIX for Dummies Questions & Answers

If statement (yes or no)

I have the program: #!/bin/ksh echo Please enter yes or no read n typeset -l n if ] then echo My name exit else echo delete my name fi Question: How can I make the program accept only the word "yes" or "no" otherwise it will ask the user to re-enter? Thanks! (7 Replies)
Discussion started by: bobo
7 Replies

6. Shell Programming and Scripting

How is use sselect statement o/p in insert statement.

Hi All, I am using Unix ksh script. I need to insert values to a table using the o/p from a slelect statement. Can anybody Help! My script looks like tihs. ---`sqlplus -s username/password@SID << EOF set heading off set feedback off set pages 0 insert into ${TB_NAME}_D... (2 Replies)
Discussion started by: nkosaraju
2 Replies

7. Shell Programming and Scripting

If statement - How to write a null statement

In my ksh script, if the conditions of a if statement are true, then do nothing; otherwise, execute some commands. How do I write the "do nothing" statement in the following example? Example: if (( "$x"="1" && "$y"="a" && "$z"="happy" )) then do nothing else command command fi... (3 Replies)
Discussion started by: april
3 Replies

8. Shell Programming and Scripting

statement

I want to write a program that would convert yard to feet and feet to yard. i.e 1 yard = 3 * feet Echo "enter a" read a expr a *3 The trick is that I want to give the user some options. After the conversion from yard to feet is done, I want to ask the user whether or not he/she wants to... (10 Replies)
Discussion started by: Ernst
10 Replies

9. Shell Programming and Scripting

if statement

can someone please tell me what is wrong with the below. i'm trying to get a script to run if the content of a variable is either small letter y or capital letter Y. if then whatever fi (4 Replies)
Discussion started by: Terrible
4 Replies

10. Shell Programming and Scripting

If statement

Hi, I have a statement in shell script which i am writing below: if ] then ..... What is the meaning of -a option in files, meaning of the statement in the if condition ] means. Thanks (3 Replies)
Discussion started by: dreams5617
3 Replies
Login or Register to Ask a Question