Solved

bash Variables  with hex 0a on the end

Posted on 2014-11-24
5
282 Views
Last Modified: 2014-12-08
I am getting data in bash and storing it in Variables.

Half the time I get the string, the other half of the time I get the string terminated with hex 0a on the end if I
pipe it to hexedit -C

is there an easy way to strip this from the variable  with a $(varname. ) or something like it ?

I am having this issue a lot

I am using the later version of redhat :)
0
Comment
Question by:TIMFOX123
  • 3
5 Comments
 
LVL 11

Expert Comment

by:tel2
ID: 40463209
Hi Tim,

Hex 0A is a newline (AKA line-feed) character, which is the standard UNIX/Linux line terminator.

Q1. Are you able to post your code so we can see how that's happening?

> "Half the time I get the string, the other half..."
Q2. When you say "half the time", do you mean in half of the variables, or do you get different results with different data, or what?

> "I am using the later version of redhat :)"
Q3. Later than what?
0
 
LVL 68

Assisted Solution

by:woolmilkporc
woolmilkporc earned 500 total points
ID: 40463288
Which way do you "pipe" the variable to the hex editor? If you use something like

A="string"
echo $A | od -tcx1

you will always see something like this (x"0a" at the end):

0000000    s   t   r   i   n   g  \n
          73  74  72  69  6e  67  0a
0000007

That's because "echo" adds a linefeed automatically.

Instead, if you use the "-n" flag of "echo ("do not output the trailing newline")

A="string"
echo -n $A | od -tcx1

then you'll see this:

0000000    s   t   r   i   n   g
          73  74  72  69  6e  67
0000006

i. e. no trailing x"0a".

I used "od" because my hexedit doesnt support a "-C" flag.

If your variable actually contains a linefeed at the end:

A="string
"
then

echo -n "$A"

will preserve this linefeed, while

echo -n $A

will not.

As tel2 suggested above, please give us more detail!
0
 

Author Comment

by:TIMFOX123
ID: 40467200
thank you both

example, If I:

grep root /etc/passwd | hexdump -C
you will see the line ends with a hex 0a

if you want to get rid of the hex 0a  you can:
 grep root /etc/passwd | tr -d '\n' | hexdump -C

There is a part of bash that I have used but to not understand where you can modify stuff with ${}

what I would like to do is to take a varable that has a hex 0a an the end and when I use it I can "chomp" it off

echo ${varname xxxxxx }
where the xxxx is code that I do not know.

also when I was saying about "later version of Linux" I was not being clear.  I should have said "currently supported" Linux like 5,6,7.  

thank you so much
0
 
LVL 68

Assisted Solution

by:woolmilkporc
woolmilkporc earned 500 total points
ID: 40467273
You see the linefeed just because "grep" adds it.
 The variable itself does not contain x'0a'.

varname=$(grep root /etc/passwd)
echo -n ${varname} | hexdump -C

Try this:

A=1234
echo ${#A}

#varname is the length of the variable varname.

The above will give 4, not 5

Or, if you want "grep"

echo 1234 > testfile
A=$(grep 1234 testfile)
echo ${#A}
4

With "${varname xxxxxx }" you probably mean variable editing (aka "parameter expansion"), using e.g. ${varname%string} (or %%), ${varname#string} (or ##) or ${varname/old/new}.

I'm not aware of a way specifying hex values with the above.
0
 
LVL 68

Accepted Solution

by:
woolmilkporc earned 500 total points
ID: 40467363
I could tell you how to strip the last character which might be a linefeed (or might not):

A="1234
"
echo ${#A}
-> 5
A="${A:0:$((${#A}-1))}"
echo ${#A}
-> 4
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
Utilizing an array to gracefully append to a list of EmailAddresses
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now