Sponsored Content
Top Forums Shell Programming and Scripting Not able to assign 0 (zero) to the existing variable Post 302849385 by Don Cragun on Sunday 1st of September 2013 05:19:20 AM
Old 09-01-2013
Quote:
Originally Posted by newbie2011
Hi, I have a variable which read the value from the lines, and if it is empty string (5 bytes), then I have to assign this variable to zero "0", it able to detect the data is empty by showing me the message "empty", but not able to assign it as zero.

Code:
WTHP=`echo "$file" | cut -c158-162`
 
if [[ $WTHP = " " ]]
then
echo "empty" >> $Log
$WTHP = 0
echo "$WTHP=" $WTHP >> $Log
fi

it will show me error message "not found".
I have tried to code it as below:
1) WTHP = 0
OR
2) WTHP = [0]
OR
3) WTHP = "0"
OR
4) WTHP_1 = 0, then echo this variable, but still will failed to assign zero to this variable still will show me same error message.

Please advise.
Scrutinizer, MadeInGermany, and wisecracker touched on some problems in your script, but there are other problems here.
Code:
WTHP=`echo "$file" | cut -c158-162`

does not return the 158th through the 162nd byte from the 1st line in the file named by the expansion of the file shell variable; it returns that range of characters (not bytes) in the name (not the contents) of the file.

From your description it is not at all clear what you want to do with the above line. If you want the 158th through the 162nd bytes from the contents of the file, that would be something like:
Code:
WTHP=$(dd if="$file" bs=1 skip=157 count=5)

If you want the 158th through the 162nd bytes from the 1st line of the contents of the file, that would be something like:
Code:
WTHP=$(head -n 1 "$file"|cut -b158-162)

If you want the 158th through the 162nd bytes from every line of the contents of the file, that would be something like:
Code:
WTHP=$(cut -b158-162 "$file")

It isn't clear what you're trying to check with:
Code:
if [[ $WTHP = " " ]]

but it isn't likely to be what you want. You talk about 5 bytes being an empty string, but by definition an empty string only contains a single string terminating null character. If you want to verify that $WTHP expands to 5 space characters, that should be:
Code:
if [ "$WTHP" = "     " ]
      or
if [[ "$WTHP" == "     " ]]

And, the code:
Code:
WTHP=0
echo "$WTHP=" $WTHP >> $Log

will append the line:
Code:
0= 0

to the file named by the expansion of $Log. If you wanted to append:
Code:
$WTHP=0

to your log file, that would be something like:
Code:
echo '$'"WTHP=$WTHP" >> "$Log"

This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

assign a value to a variable

I have a list of names in a file. i want to assign those names to a variable in such a manner eg: $cat file.txt pete lisa john var=pete-lisa-john how do i do this in shell scripting? (10 Replies)
Discussion started by: Shivdatta
10 Replies

2. UNIX for Dummies Questions & Answers

New Variable with Existing variable( Urgent)

hi all, i want use the variable value as a new variable name. print output of new variable. for i in COMPUTER1 COMPUTER2 do flag_name=${i}_FLAG eval ${flag_name}=123 echo $i'_FLAG' done output is COMPUTER1_FLAG COMPUTER2_FLAG i need output as 123 123 (2 Replies)
Discussion started by: arvindng
2 Replies

3. Shell Programming and Scripting

if condition for variable existing in file

Hi, Sorry for the dumb question but I can't seem to figure this one out. I want to write an if condition that basically checks if my variable is in a file. So far I have the following: if ] then do something else do something else fi So essentially if the grep returns something then... (3 Replies)
Discussion started by: eltinator
3 Replies

4. Shell Programming and Scripting

Assign this to a variable....

bash-3.00$ /usr/bin/netstat -an -f inet | awk -F' ' '{if ($1$4 == "tcp*.21")print $5}' *.* bash-3.00$ A=` /usr/bin/netstat -an -f inet | awk -F' ' '{if ($1$4 == "tcp*.21")print $5}'` bash-3.00$ echo $A db2_lastdone.bkp As you can see ,after running command i get *.* in return but the same... (5 Replies)
Discussion started by: ak835
5 Replies

5. Shell Programming and Scripting

assign awk's variable to shell script's variable?

Dear All, we have a command output which looks like : Total 200 queues in 30000 Kbytes and we're going to get "200" and "30000" for further process. currently, i'm using : numA=echo $OUTPUT | awk '{print $2}' numB=echo $OUTPUT | awk '{print $5}' my question is : can I use just one... (4 Replies)
Discussion started by: tiger2000
4 Replies

6. Shell Programming and Scripting

Shell assign variable to another variable

How can I assign a variable to an variable. IE $car=honda One way I can do it is export $car=honda or let $car=2323 Is there any other ways to preform this task (3 Replies)
Discussion started by: 3junior
3 Replies

7. UNIX for Dummies Questions & Answers

creating a new variable from existing data

Hello, I have the following data set: TRAIT DOSE 40 0.4 30 0.3 95 1.2 120 1.7 85 1.4 136 1.8 134 1.8 40 0.4 30 0.3 95 1.2 120 1.7 85 1.4 136 1.8 134 1.8 40 0.4 30 0.3 95 1.2 (2 Replies)
Discussion started by: wolf_blue
2 Replies

8. UNIX for Beginners Questions & Answers

Need to pass variable in a command and assign value to a variable

Hello All, Hope you're doing well ! I am trying below command to be passed in a shell script, header_date_14 is a variable and $1 is the name of a file I intend to pass as a command line argument, however command line argument is not being accepted. header_date_14=$(m_dump... (8 Replies)
Discussion started by: ektubbe
8 Replies

9. UNIX for Beginners Questions & Answers

How can I assign awk's variable to shell script's variable?

I have the following script, and I want to assign the output ($10 and $5) from awk to N and L: grdinfo data.grd | awk '{print $10,$5}'| read N L output from gridinfo data.grd is: data.grd 50 100 41 82 -2796 6944 0.016 0.016 3001 2461. where N and L is suppose to be 3001 and 100. I use... (8 Replies)
Discussion started by: geomarine
8 Replies

10. UNIX for Beginners Questions & Answers

Assign value to variable

Hi Guys, I need to assign the value of which has rows to a variable, Can you advise how to do that hive --orcfiledump /hdfs_path/ | grep "Rows" Rows: 131554 I need to assign this row count itself to a unix variable count=$(hive --orcfiledump /hdfs_path/ | grep "Rows") Expected ... (6 Replies)
Discussion started by: Master_Mind
6 Replies
All times are GMT -4. The time now is 11:55 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy