Using sed and if multiple conditions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Using sed and if multiple conditions
# 1  
Old 07-19-2014
Using sed and if multiple conditions

Hi

I've been trying to get this to work but so far no luck.
Code:
    #!/usr/bin/ksh

unset EXP
APP=$1
EXP=`sed -n "/${APP}/p" tIclrpt.out |awk '{print $7}'|sed '/^$/d'`
EXT=`sed -n "/${i}/p" ${SESLOG} |awk '{print $4}'|grep "${i}"`
EXEM=/path/to/fail
ACTI=/path/to/success

if [ -z $EXP ] || [ -z $EXP = none ]
then
echo " this has a value"
echo " EXP Value is: ${EXP} "
echo "${APP}" >> $ACTI
else
echo "${APP}" >> $EXEM
fi


I need 1 of the two conditions met to log the application into a log that can be used to recycle the application at a later time.

Sometimes when you query this app, it will display one of two characters with that sed i used.
1. output is "none"
2. output is blank


In a test, just to echo if it's working or not, it always see's the blank line as a value.
if I do it this way with the application of value = none
Code:
if [ -z $EXP ] || [ -z $EXP = none ]

It works the way it should.

But if the value is blank i get this:

Code:
exp3.ksh[6]: test: argument expected
 this has a value
 EXP Value is:

# 2  
Old 07-19-2014
Code:
if [ -z "$EXP" ] || [ "$EXP" = "none" ]
then

This User Gave Thanks to MadeInGermany For This Post:
# 3  
Old 07-19-2014
Quote:
Originally Posted by MadeInGermany
Code:
if [ -z "$EXP" ] || [ "$EXP" = "none" ]
then

hey thanks! actually figured it out when i took a break lol... over thinking it too much. It was actually supposed to be:

Code:
if [ -z "$EXP" -o "$EXP" = "none" ]

# 4  
Old 07-19-2014
Note: -o works too, but it has been marked obsolescent, and therefore MadeInGermany's suggestion is the preferred approach.

See Test: Application Usage
# 5  
Old 07-19-2014
Really? I think -o within [ ] (test) is quite okay. Perhaps you mean the [[ ]] compound that has || for "or".
# 6  
Old 07-19-2014
No I mean the standard test.
Quote:
The XSI extensions specifying the -a and -o binary primaries and the '(' and ')' operators have been marked obsolescent. (Many expressions using them are ambiguously defined by the grammar depending on the specific expressions being evaluated.) Scripts using these expressions should be converted to the forms given below. Even though many implementations will continue to support these obsolescent forms, scripts should be extremely careful when dealing with user-supplied input that could be confused with these and other primaries and operators. Unless the application developer knows all the cases that produce input to the script .....
Test: Application Usage
This User Gave Thanks to Scrutinizer For This Post:
# 7  
Old 07-19-2014
Interesting - this would break thousands of old scripts.
In old times test and even [ were an external command; -a and -o were most efficient.

IMHO they should leave it alone and recommend the [[ ]] instead.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Multiple If conditions

I am analyzing one of the scripts written by another person.script is having multiple if conditions and everything are nested.The code is not formatted properly.Is there any way to identify in Unix to identify begin and end of a particular if block? (6 Replies)
Discussion started by: vamsi.valiveti
6 Replies

2. UNIX for Beginners Questions & Answers

Logic for multiple if conditions.

Hi Gurus, Is there a way we can set a logic for this problem ? The input file looks like below; 1 15 17 2 8 12 3 18 24 4 21 23 5 2 4 6 11 25 So, I would like to print for any row of the input file where the range of value between $2 to $3 lies within the min and max values of Min=10... (2 Replies)
Discussion started by: Indra2011
2 Replies

3. Shell Programming and Scripting

Multiple conditions in IF

Fellas, Am new to unix os/ and here the situation , I am trying to write multiple condition statement inside if but it throws me a error here is my piece of code , if ] && ] && ] then commands fi error : line 15 : ` can someone please advise me how to fix it Please use... (7 Replies)
Discussion started by: xeccc5z
7 Replies

4. UNIX for Dummies Questions & Answers

If + multiple conditions

Hello Unix-Forums! It has been a long time since my last post, but finally I've got a new question: I know in case you can use multiple patterns by case $var in a|b|c|ab) and so on. But how would I place an OR between if ] then ... if ] then ... I want to execute the "..." if... (3 Replies)
Discussion started by: intelinside
3 Replies

5. UNIX for Dummies Questions & Answers

Nested if with multiple conditions

Deal Experts I am working on a script to find a date which is 7 days older and follwoing is my approach #!/bin/sh Yr=`date +"%Y"` Mn=`date +"%m"` Md=28 Da=`date +"%d"` echo $Yr echo $Mn echo $Da var1=$Yr$Mn$Da echo "before" $var1 if expr $Da > 7 then Da=`expr $Da - 7`... (3 Replies)
Discussion started by: sweetnsourabh
3 Replies

6. Shell Programming and Scripting

multiple conditions in 'if clause'

Hi, When i use the below code snippet in my shell script OFC_10.sh: if then echo "Success" exit 2 elif then echo "Failure" exit 6 I get the error message: ./OFC_10.sh: line 41: ' ./OFC_10.sh: line 45: ' Line 41 is the line where If loop starts and line 45 is... (2 Replies)
Discussion started by: shrutihardas
2 Replies

7. Shell Programming and Scripting

specifying multiple conditions in AWK

how can i specify more than 1 consition in the following AWK statament?? i.e. if $2 is ABCD and $3 is MNOP and $4 is KLPM similarly for OR #!/bin/ksh awk -F '' ' $2 == "ABCD" { print $2, $3;}' file.xml (2 Replies)
Discussion started by: skyineyes
2 Replies

8. Shell Programming and Scripting

Help regarding multiple conditions

Hi All, I am new to shell scripting. Can any one say what is wrong in this if statement, that uses multiple conditions if then *************** else if ( -z $pcs && "$night_time_calc" > "$night_time" ) then ******************************** ... (4 Replies)
Discussion started by: ssenthilkumar
4 Replies

9. Shell Programming and Scripting

multiple if conditions

Guys, Im trying to have a script that evaluates multiple conditions : test.sh: if then echo "host $1" else if then echo "host $1" else echo $1 not valid exit 1 fi when I do ./test.sh brazil1 I get: (4 Replies)
Discussion started by: bashshadow1979
4 Replies

10. UNIX for Dummies Questions & Answers

multiple conditions in if/then

Hello, I am having trouble with the syntax with a conditional statement in a BASH script involving multiple conditions. Any suggestions would be greatly appreciated! if ; then array=("${array}" "$dnNum" ) fi i receive this error: ./testscript: ' (4 Replies)
Discussion started by: grandtheftander
4 Replies
Login or Register to Ask a Question