Help with test statement


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with test statement
# 1  
Old 12-22-2010
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
Code:
if [ "$cfg" = log ]
then
log="${cfg}"
cfg=""
fi

# 2  
Old 12-22-2010
Pls give input sample and expected output.
# 3  
Old 12-22-2010
Just need help with this statement:
Code:
if [ "$cfg" = log ]

According to my notes:
True if cfg contains log

Is that right ?
# 4  
Old 12-22-2010
HTML Code:
echo $cfg | grep ".log$" >/dev/null 2>&1

flag=`echo $?`

if [ $flag -eq 0 ]; then
     echo "$cfg ends with .log"
     #perform your operations
else
     #other operations of setting to null/or as required.
fi
# 5  
Old 12-22-2010
You may do like this:
1st extract the extension of file, store in a variable and use that in if condition
Code:
.....
....
ext=$(echo $cfg | sed 's/.*\(...\)$/\1/')
if [ "$ext" = "log" ]
.....
....

This User Gave Thanks to anurag.singh For This Post:
# 6  
Old 12-22-2010
Complete script:

Code:
#!/usr/bin/sh
old_IFS=$IFS
IFS=$' '
echo MINUTES\;HOURS\;DAY_OF_MONTH\;MONTH\;DAY_OF_WEEK\;SCRIPT\;CFG\;P1\;P2\;LOG
cat cron.txt | sed '/^$/d' | sed '/^#/d'| sed 's/>//g' | sed 's/ (. ~\/.profile ; timex / /g'| sed 's/)/ /g' | sed 's/ 2&1//g' | sed 's/*/+/g' | tr -s ' ' | sed
 's/ / /g' | while read mins hours day_of_mon month day_of_week script cfg p1 p2 log
do
if [ "$log" = "" ]
then
log="${p2}"
p2=""
fi
if [ "$log" = "" ]
then
log="${p1}"
p1=""
fi
if [ "$cfg" = log ]
then
log="${cfg}"
cfg=""
fi
 
echo ${mins}\;${hours}\;${day_of_mon}\;${month}\;${day_of_week}\;${script}\;${cfg}\;${p1}\;${p2}\;${log}
done
IFS=$old_IFS
exit

Sample from cron.txt
Code:
30 04  *  *  * (. ~/.profile ; timex /Data/bin/load_data.sh /Data/bin/1.cfg ) 2>&1
32 04  *  *  * (. ~/.profile ; timex /Data/bin/load_data.sh /Data/bin/2.cfg ) 2>&1
00 05  *  *  * (. ~/.profile ; timex /Data/bin/load_data.sh /Data/bin/3.cfg ) >> /Data/logs/load_data.log 2>&1

# 7  
Old 12-22-2010
Following should help:
Code:
..
..
..
if [ "$log" = "" ]
then
log="${p1}"
p1=""
fi
ext=$(echo $cfg | sed 's/.*\(...\)$/\1/')
if [ "$ext" = "log" ]
then
log="${cfg}"
cfg=""
fi

echo ${mins}\;${hours}\;${day_of_mon}\;${month}\;${day_of_week}\;${script}\;${cfg}\;${p1}\;${p2}\;${log}
..
..

This User Gave Thanks to anurag.singh For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

7 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 in IF statement

How do I test multiple words in a string test like below: if ] 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? ... (10 Replies)
Discussion started by: djehresmann
10 Replies

3. 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

4. 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

5. 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

6. 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

7. 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
Login or Register to Ask a Question