Unable to assign a value


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Unable to assign a value
# 1  
Old 11-03-2013
Unable to assign a value

I have written a shell script to calculate dbsize :-

Code:
 
db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F : '{print $2}'
dbsize=`db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F : '{print $2}'`
echo $dbsize


when I execute it the syntax works but it's not able to assign to a variable.


Quote:
ksh -x i.sh

+ db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ awk -F : {print $2}
21874778112
+ + db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ awk -F : {print $2}
dbsize=
+ echo
Smilie Smilie

Can you please help me identify the mistake I am doing here . Why it's not working here when I try to assign the value to a variable.

Thank you
# 2  
Old 11-03-2013
Not the slightest idea. Can you echo the result immediately < echo $(db2 ...) >?
# 3  
Old 11-03-2013
Added one more line with echo :-

Code:
 
db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F : '{print $2}'
echo $(db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F : '{print $2}')
dbsize=`db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F : '{print $2}'`
echo $dbsize

Output:-

Quote:
+ db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ awk -F : {print $2}
21874778112
+ db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ awk -F : {print $2}
+ echo
+ + db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ awk -F : {print $2}
dbsize=
+ echo
# 4  
Old 11-03-2013
And if you drop the first line?
# 5  
Old 11-03-2013
Only the first line gives me the output and rest 2 doesn't.

---------- Post updated at 05:35 PM ---------- Previous update was at 05:09 PM ----------

looks to be an issue with sed -n

Script :-
Code:
 
echo $(db2 "call get_dbsize_info(?,?,?,-1)"  )
echo $(db2 "call get_dbsize_info(?,?,?,-1)"  | sed -n '8p')

Code:
 
+ db2 call get_dbsize_info(?,?,?,-1)
+ echo Value of output parameters -------------------------- Parameter Name : SNAPSHOTTIMESTAMP Parameter Value : 2013-11-03-17.31.13.182521 Parameter Name : DATABASESIZE Parameter Value : 21874778112 Parameter Name : DATABASECAPACITY Parameter Value : 115676934144 Return Status = 0
Value of output parameters -------------------------- Parameter Name : SNAPSHOTTIMESTAMP Parameter Value : 2013-11-03-17.31.13.182521 Parameter Name : DATABASESIZE Parameter Value : 21874778112 Parameter Name : DATABASECAPACITY Parameter Value : 115676934144 Return Status = 0
+ db2 call get_dbsize_info(?,?,?,-1)
+ sed -n 8p
+ echo


Last edited by Don Cragun; 11-03-2013 at 06:51 PM.. Reason: Change QUOTE tags to CODE tags.
# 6  
Old 11-03-2013
OK. Let us take a step backwards here.

Using echo with no quotes on it arguments is hiding any newlines, tabs, and any sequences of two or more spaces that may have been produced by the output of the db2 command. Then, since you converted all of the output from db2 into a single line with the echo, sed -n 8p will obviously not find a number to print on the eighth line of its single line of input.

But, even before we get to that problem, you also show that the output from db2 has spaces surrounding the colons in its output. So, even if the eighth line of output was something like:
Code:
Parameter Value : 21874778112

The output when printing the 2nd field of that colon separated value line would have a leading space (which you did not show us in any message in this thread until now). That leading space will keep the assignment to dbsize from working the way you want it to work.

Making several wild assumptions, the following change shown in red might work:
Code:
dbsize=`db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8p' | awk -F ': *' '{print $2}'`

or, preferably:
Code:
dbsize="$(db2 "call get_dbsize_info(?,?,?,-1)" | sed -n 8p | awk -F ': *' '{print $2}')"

or:
Code:
dbsize="$(db2 "call get_dbsize_info(?,?,?,-1)" | sed -n '8s/.*: *//p')"

If these don't work, please show us the exact output from the command:
Code:
db2 "call get_dbsize_info(?,?,?,-1)"

so we can actually see what is on the eighth line of its output.
# 7  
Old 11-03-2013
Had no luck with the above syntax so Here's the db2 command output :-

Code:
 
db2 "call get_dbsize_info(?,?,?,-1)"
 
  Value of output parameters
  --------------------------
  Parameter Name  : SNAPSHOTTIMESTAMP
  Parameter Value : 2013-11-03-19.00.50.590366
 
  Parameter Name  : DATABASESIZE
  Parameter Value : 21874778112
 
  Parameter Name  : DATABASECAPACITY
  Parameter Value : 115676934144
 
  Return Status = 0

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check assign

I have a person script which has a following statement. BUILD_FOLDER=$2 i=$((${#BUILD_FOLDER}-1)) if then BUILD_FOLDER=$BUILD_FOLDER/ #echo $BUILD_FOLDER else echo " " #echo $BUILD_FOLDER fi What and how this statement works ? i=$((${#BUILD_FOLDER}-1)) (5 Replies)
Discussion started by: ilugopal
5 Replies

2. Shell Programming and Scripting

Unable to read assign values to two variables in while loop

I am trying to read a input file which has two columns separated by space Input file server1 server2 server3 server4 server5 server6 When i execute the below while code it reads line by line and a and b variables are able to successfully fetch the values while read a b do echo "$a" echo... (5 Replies)
Discussion started by: chidori
5 Replies

3. Programming

Unable to assign zero to unsigned character array

Hi, I am unable to assign value zero to my variable which is defined as unsigned char. typedef struct ABCD { unsigned char abc; unsigned char def; unsigned char ghi; } ABCD; typedef ABCD *PABCD; In my Por*C code, i assign the values using memcpy like below ... (3 Replies)
Discussion started by: gthangav
3 Replies

4. Shell Programming and Scripting

Unable to assign command output to variable

Code set -x STATUS="0" echo $STATUS for i in `ls -ltr Report*|awk '{ print $9 }'` do if then flg = "`head -1 "$i" |cut -c 31-33`" echo `head -1 "$i" |cut -c 31-33` echo $flg if then echo "having Fun" STATUS="2" else echo "no Fun" fi fi (2 Replies)
Discussion started by: Funkeydude
2 Replies

5. Shell Programming and Scripting

how to assign value

#! /bin/bash if ; then echo "Set number " else k=$1 sqlplus ${scheme}/${apsswd}@${server} @query.sql $k fi file query.sql looks like this select * from tab1 where number =${k}; =================================== it doesnt work my question is how to assign k value in last... (2 Replies)
Discussion started by: kvok
2 Replies

6. Shell Programming and Scripting

Assign the value

DATA --------------- 0 Please tell me, if the file contains 0 after --. then assign the value to variable $var=false, DATA --------------- 1 then $var=true, (2 Replies)
Discussion started by: sandy1028
2 Replies

7. Shell Programming and Scripting

Not able to assign a value to variable

Hi Experts, I am facing some problem while developing the script.My input config.csv file contains the three columns namely pathname,filename,filetype.Based on the file type i have to use ftp command that is if filetype=csv then do ftp. The input file is cat config.csv... (13 Replies)
Discussion started by: Amey Joshi
13 Replies

8. Shell Programming and Scripting

Using bc to assign value

Friends here is code which is used to add floating point using bc, but I m not getting any output instead some errors. 1 #!/bin/bash 4 if 5 then 6 echo "Our input is from a Device" 7 while read myline 8 do 9 10 total= `echo $total + $myline... (2 Replies)
Discussion started by: navjinder
2 Replies

9. Shell Programming and Scripting

How to assign the specific value

Hi Everyone, How to assign the specific value which return from database? here is the return value from database --> (return status = 0) 0 <----- this I only need to get the "0" .. assign to another declare variable. hope someone will help me.. Please thank you.. (4 Replies)
Discussion started by: ryanW
4 Replies

10. Shell Programming and Scripting

Unable to assign value to variable using awk coz of whitespace in value

Unix gurus, I have a file as below, which is basically the result set obtained from a sql query on an Oracle database. ID PROG_NAME USER_PROG_NAME -------- --------------- ---------------------------------------- 33045 INCOIN Import Items 42690 ... (3 Replies)
Discussion started by: sunpraveen
3 Replies
Login or Register to Ask a Question