Visit Our UNIX and Linux User Community


Not able to assign 0 (zero) to the existing variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Not able to assign 0 (zero) to the existing variable
# 1  
Old 09-01-2013
Not able to assign 0 (zero) to the existing variable

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.

Last edited by Scrutinizer; 09-01-2013 at 03:15 AM.. Reason: code tags
# 2  
Old 09-01-2013
Hi, a test for an empty string is "", not " " :
Code:
if [[ $WTHP == "" ]]

The correct syntax with double brackets is 2 equal signs.

With an assignment there can be no spaces:
Code:
WTHP=0


Last edited by Scrutinizer; 09-01-2013 at 05:19 AM..
# 3  
Old 09-01-2013
I am used to check for zero length and the old style [
Code:
if [ -z "$WTHP" ]

Spaces required! (Arguments for the [ command.)
But assignments must be just = and no spaces!
(Otherwise the "variable" becomes a command.)
# 4  
Old 09-01-2013
Hi newbie2100...

If you are not sure try experimenting longhand first, it aids me in understanding what is going on inside the shell...
(Note:- I usually try to stay as basic as possible until I do understand.)

Hope this helps:-
Code:
Last login: Sun Sep  1 09:32:06 on ttys000
AMIGA:barrywalker~> # A null character...
AMIGA:barrywalker~> WHTP=""
AMIGA:barrywalker~> echo "$WHTP"

AMIGA:barrywalker~> # A character zero...
AMIGA:barrywalker~> WHTP="0"
AMIGA:barrywalker~> echo "$WHTP"
0
AMIGA:barrywalker~> # This is an error with or without spaces...
AMIGA:barrywalker~> $WHTP=0
-bash: 0=0: command not found
AMIGA:barrywalker~> # It should be...
AMIGA:barrywalker~> WHTP=0
AMIGA:barrywalker~> echo "$WHTP"
0
AMIGA:barrywalker~> # Hope this helps...

# 5  
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:
# 6  
Old 09-01-2013
Thanks all your help!! I got the fixed. Smilie

Previous Thread | Next Thread
Test Your Knowledge in Computers #194
Difficulty: Easy
Perl was ranked in the top 10 according to the TIOBE Index for October 2019.
True or False?

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

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

Featured Tech Videos