Help with if-then; variables.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with if-then; variables.
# 1  
Old 08-17-2011
Help with if-then; variables.

Hello, this is my 1st post and really like what I see from this community so far. I have a script I am trying to create. This is what I have started:

#!/bin/sh

export JAVA_HOME=/hosting/products/WebSphereU01/java
/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers

The output is like this (truncated)

Container: CP03-A06-WXS_container_Profile_PTE03-nc3sz2ecmas10_C-0, Server:CP03-A06-WXS_container_Profile_PTE03-nc3sz2ecmas10, Zone:ZoneB
P:185 Primary
P:186 Primary
P:187 Primary
P:188 Primary
P:189 Primary
P:137 AsynchronousReplica
P:148 AsynchronousReplica
P:180 AsynchronousReplica
P:192 AsynchronousReplica
P:7 AsynchronousReplica
Container: CP03-A07-WXS_container_Profile_PTE03-nc3sz2ecmas10_C-0, Server:CP03-A07-WXS_container_Profile_PTE03-nc3sz2ecmas10, Zone:ZoneB
P:195 Primary
P:196 Primary
P:197 Primary
P:198 Primary
P:199 Primary
P:139 AsynchronousReplica
P:149 AsynchronousReplica
P:182 AsynchronousReplica
P:19 AsynchronousReplica
P:56 AsynchronousReplica

Num containers matching = 40
Total known containers = 40
Total known hosts = 8

I bolded the example iof the necessary data that I need.

So this is basically what I need for the script to do. The criteria of what I want the script to to do is return single values say a "1" or "0". I can either go with one of two scenarios, the 1st is:

If total hosts equal 27 and if total containers equals 135 or 136 – than assign a value of "0"; any other result a value of "1" should be assigned.

Or...

Add total number of host to total number of containers and if the result anything other than 162 or 163 then assigne a value of "1". Anything other than that assign a value of "0".

I appreciate any ideas and help you guys can lend to offer. I have tried awk, sed and if-then scenarios but haven't been able to get the logic right.
# 2  
Old 08-17-2011
Pipe your output through awk:

Code:
shell_var=$( your-command | awk '
   /Total known containers/ { sum += $NF; next}
   /Total known hosts/ { sum += $NF; next; }
   END {
      printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
   }' )

If you really are using /bin/sh you'll need to use back-ticks, but everything else is the same.
# 3  
Old 08-18-2011
Quote:
Originally Posted by agama
Pipe your output through awk:

Code:
 
shell_var=$( your-command | awk '
   /Total known containers/ { sum += $NF; next}
   /Total known hosts/ { sum += $NF; next; }
   END {
      printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
   }' )

If you really are using /bin/sh you'll need to use back-ticks, but everything else is the same.
Hmmmm, I tried running this but get some kind of error.

./hosts.sh
./hosts.sh[4]: 0403-057 Syntax error at line 9 : `)' is not expected.

I added the script as instructed.

#!/bin/sh
export JAVA_HOME=/hosting/products/WebSphereU01/java
/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570
-ch nc3sz2ecmus02 -containers | awk ' {
/Total known containers/ { sum += $NF; next}
/Total known hosts/ { sum += $NF; next; }
END {
printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
}' )
# 4  
Old 08-18-2011
where you added this $(

it should be there before $(/hosting/
This User Gave Thanks to itkamaraj For This Post:
# 5  
Old 08-18-2011
Quote:
Originally Posted by itkamaraj
where you added this $(

it should be there before $(/hosting/
I added the parenthesis (/hosting/ogsa/ogsa........

but then received this error.

./hosts.sh
Syntax Error The source line is 2.
The error context is
/Total known containers/ >>> { <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 2.
awk: 0602-540 There is a missing } character.
# 6  
Old 08-18-2011
You are missing the variable to assign the result to and the opening $(:
Code:
#!/bin/sh
 export JAVA_HOME=$( /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers | awk ' {
 /Total known containers/ { sum += $NF; next}
 /Total known hosts/ { sum += $NF; next; }
 END {
 printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
 }' )

If that still produces an error, use back-quotes like this:

Code:
#!/bin/sh
 export JAVA_HOME=` /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers | awk ' {
 /Total known containers/ { sum += $NF; next}
 /Total known hosts/ { sum += $NF; next; }
 END {
 printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
 }' `

Using backquotes is deprecated, but if you are indeed using the original Bourne shell (most UNIX flavours install bash as /bin/sh) then you'll need to use the back-quotes. Try with the first construct though.

---------- Post updated at 23:17 ---------- Previous update was at 23:12 ----------

Hard to say just from the error. Can you cut/paste your script as you executed it?

Last edited by agama; 08-18-2011 at 12:14 AM.. Reason: misread line break in original post -- please use code tags
# 7  
Old 08-18-2011
Quote:
Originally Posted by agama
You are missing the variable to assign the result to and the opening $(:
Code:
#!/bin/sh
 export JAVA_HOME=$( /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers | awk ' {
 /Total known containers/ { sum += $NF; next}
 /Total known hosts/ { sum += $NF; next; }
 END {
 printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
 }' )

If that still produces an error, use back-quotes like this:

Code:
#!/bin/sh
 export JAVA_HOME=` /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers | awk ' {
 /Total known containers/ { sum += $NF; next}
 /Total known hosts/ { sum += $NF; next; }
 END {
 printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
 }' `

Using backquotes is deprecated, but if you are indeed using the original Bourne shell (most UNIX flavours install bash as /bin/sh) then you'll need to use the back-quotes. Try with the first construct though.

---------- Post updated at 23:17 ---------- Previous update was at 23:12 ----------

Hard to say just from the error. Can you cut/paste your script as you executed it?

This is the error I received. I beleive there is an issue with the JAVE_HOME path which was modified. I have to set the environment in Java to execute this script.

./hst1
./hst1[2]: /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh: not found.
Syntax Error The source line is 2.
The error context is
/Total known containers/ >>> { <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 2.
awk: 0602-540 There is a missing } character.

I copied and pasted the script exactly as yuo had it for the bourne shell:

#!/bin/sh
export JAVA_HOME=` /hosting/products/WebSphereU01/java/hosting/ogsa/ogsa-6.1.0.5/ObjectGrid/bin/xsadmin.sh -p 26572 -bp 26570 -ch nc3sz2ecmus02 -containers | awk ' {
/Total known containers/ { sum += $NF; next}
/Total known hosts/ { sum += $NF; next; }
END {
printf( "%d\n", sum > 161 && sum < 164 ? 1 : 0 );
}' `
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to pass variables into anothother variables?

Below are three variables, which I want to pass into variable RESULT1 username1=userid poihostname1=dellsys.com port1=8080 How can I pass these variables into below code... RESULT1=$((ssh -n username1@poihostname1 time /usr/sfw/bin/wget --user=sam --password=123 -O /dev/null -q... (4 Replies)
Discussion started by: manohar2013
4 Replies

2. Shell Programming and Scripting

Passing awk variables to bash variables

Trying to do so echo "111:222:333" |awk -F: '{system("export TESTO=" $2)}'But it doesn't work (2 Replies)
Discussion started by: urello
2 Replies

3. Shell Programming and Scripting

BASH arrays and variables of variables in C++

Sometimes it is handy to protect long scripts in C++. The following syntax works fine for simple commands: #define SHELLSCRIPT1 "\ #/bin/bash \n\ echo \"hello\" \n\ " int main () { cout <<system(SHELLSCRIPT1); return 0; } Unfortunately for there are problems for: 1d arrays:... (10 Replies)
Discussion started by: frad
10 Replies

4. Shell Programming and Scripting

Running a script with multiple variables like 25 variables.

Hi All, i have a requirement where i have to run a script with at least 25 arguements and position of arguements can also change. the unapropriate way is like below. can we achieve this in more good and precise way?? #!/bin/ksh ##script is sample.ksh age=$1 gender=$2 class=$3 . . .... (3 Replies)
Discussion started by: Lakshman_Gupta
3 Replies

5. Shell Programming and Scripting

Variables

I need to define a variable of variable. I'll try to explain it. I've a list: LIST="aaa bbb ccc"I need to do something like: for word in LIST ;do res_$word=`ls $word` done This doesn't work. Any idea? Thanks (3 Replies)
Discussion started by: kekaes
3 Replies

6. Shell Programming and Scripting

Using cd on Variables

I can't for the love of me figure out how to work with double quotes and single quotes in variables in bash scripts. For instance, I added the following line to my .bash_aliases file: WINDOWS="'/host/Documents and Settings/Solar Zenith/My Documents'"; I want this so that I can go straight to 'My... (2 Replies)
Discussion started by: solar zenith
2 Replies

7. Programming

How to convert byteArray variables to HexaString variables for Linux?

Hello everybody, I am having problem in converting byte array variables to Hexa String variables for Linux. I have done, converting byte array variables to Hexa String variables for Windows but same function doesn't work for linux. Is there any difference in OS ? The code for Windows is given... (2 Replies)
Discussion started by: ritesh_163
2 Replies

8. Shell Programming and Scripting

naming variables with variables

Hello, FIRST QUESTION: I am writing a script in which a query is taken at the beginning of the script to be later used at the end. In the query, variables are generated from a loop, and I would like to assign the variable NAME (not value) with an appended 1, 2, 3, 4.....n. The number of... (2 Replies)
Discussion started by: Allasso
2 Replies

9. Shell Programming and Scripting

non-variables with $

I am writing a csh script and I need to echo a word that starts with $ and is not a variable. How do I do that? (3 Replies)
Discussion started by: oprestol
3 Replies

10. UNIX for Dummies Questions & Answers

Using Variables to Set Other Variables

I have a script that I'm trying to shorten (below) by removing repetitive code. if ] then commodity_ndm_done=Y fi if ] then customer_ndm_done=Y fi if ] then department_ndm_done=Y fi if ] then division_ndm_done=Y fi (3 Replies)
Discussion started by: superdelic
3 Replies
Login or Register to Ask a Question