Newline in my script-built shell variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Newline in my script-built shell variable
# 1  
Old 06-03-2011
Newline in my script-built shell variable

Hi all,

I'm not exactly a shell script guru, so this is probably a very silly question and I'm not seeing the point, but you know, sometimes it happens...

I have this script which adds entries to local arp cache using it to find the corresponding IP address.

Code:
# export MAC=00:25:90:34:3d:f2
# export IP=$(fping -c1 -g -q `ifconfig eth0 | grep "inet addr" | awk -F : {'print $2'} | awk {'print $1'} | awk -F . {'print $1"."$2"."$3".0/24"'}` &>/dev/null; echo  && arp -n | grep $MAC | awk {'print $1'})

The problem is that in every macro I use from now on, the variable $IP inserts a newline before being printed or used.

Code:
# echo "IP is $IP"
> IP is
> 192.168.26.59

I cannot use this variable inside a more complex command because of this newline.

Why is this happening and how to solve it?

I thank you all in advance.

Bye,
M.

Last edited by pludi; 06-03-2011 at 02:27 PM..
# 2  
Old 06-03-2011
Slide the trailing quote left of the variable, and the lf is just white space, poof.
Code:
# echo "IP is "$IP

# 3  
Old 06-03-2011
Quote:
Originally Posted by micantox
... the variable $IP inserts a newline before being printed or used.

...<snip>...

Why is this happening
After a brief glance at your code, I'd say the echo is to blame. If you don't need it, remove it. Or, you can do as DGPickett suggests and not quote the $IP.

Regards,
Alister
# 4  
Old 06-04-2011
Ok, I'm so sorry to have opened a thread for such a stupid question... I was totally sure to have tried every possible combination. Smilie

Ok, it was the last working day in the week and the last working hour in the day, but... Smilie

Thanks both of you!

M.
# 5  
Old 06-04-2011
I like my method of finding my local IP address better:
Code:
DEVICE="$(netstat -nr | sed -n '/^0.0/s/.* //p')"
test -z "$DEVICE"  &&  { echo "There is no default route"; exit 1; }
IP=$(/sbin/ifconfig $DEVICE 2>/dev/null | sed -n '/inet /s/.*addr:\([0-9.]*\).*/\1/p')

But if you want your external IP address or URL, there's a much more simple way:
Code:
IP=$(curl -s queryip.net/ip/)
URL=$(curl -s queryip.net/url/)

# 6  
Old 06-05-2011
Quote:
Originally Posted by KenJackson
I like my method of finding my local IP address better:
Hi,

I actually have to find the IP address of another server on the same LAN given its MAC address.
Thanks for sharing your ideas and code!

M.
# 7  
Old 06-05-2011
Just for the fun of it Smilie
Code:
echo "Your ip is:" $(/sbin/arp -a | grep 00:00:44:00:01:44 | awk -F'[(|)]' '{print $2}')


Last edited by Franklin52; 06-08-2011 at 03:56 AM.. Reason: Please use code tags, thank you
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Converting shell to Perl I run into shell built in function trap and need alternative in Perl

I am working on converting shell to Perl script. In shell we have built in function trap Do you know alternative in Perl or actually we don't need it? Thanks for contribution (3 Replies)
Discussion started by: digioleg54
3 Replies

2. Shell Programming and Scripting

Unable to pass shell script variable to awk command in same shell script

I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist. diff=$1$2.diff id=$2 new=new_$diff echo "My id is $1" echo "I want to sync for user account $id" ##awk command I am using is as below cat $diff | awk... (2 Replies)
Discussion started by: Ashunayak
2 Replies

3. Shell Programming and Scripting

SH script, variable built command fails, but works at command line

I am working with a sh script on a solaris 9 zone (sol 10 host) that grabs information to build the configuration command line. the variables Build64, SSLopt, CONFIGopt, and CC are populated in the script. the script includes CC=`which gcc` CONFIGopt=' --prefix=/ --exec-prefix=/usr... (8 Replies)
Discussion started by: oly_r
8 Replies

4. UNIX for Dummies Questions & Answers

newline character in a variable

variable="unix\nlinux" echo $variable expected output: unix linux :wall: can i do that ?? thanks in advance!! (3 Replies)
Discussion started by: sathish92
3 Replies

5. Shell Programming and Scripting

How can I add a newline In a text file using Shell Script

Good day ... Well i do have this project in school, in our Principles Of Operating System Class We are using Cygwin.... And our project goes like this... Create a dictionary using cygwin. Display the following menu at the start of execution 1-add a word in the dictionary # specify the... (1 Reply)
Discussion started by: kpopfreakghecky
1 Replies

6. UNIX for Dummies Questions & Answers

How can I add a newline In a text file using Shell Script

Good day ... Well i do have this project in school, in our Principles Of Operating System Class We are using Cygwin.... And our project goes like this... Create a dictionary using cygwin. Display the following menu at the start of execution 1-add a word in the dictionary # specify... (1 Reply)
Discussion started by: kpopfreakghecky
1 Replies

7. Shell Programming and Scripting

awk built-in variable for input file

Hi guys, Does awk have a built-in variable which I can use to display the input file it's currently reading? I'm currently concatenating multiple files using awk and later on do some parsing. But for now, I want to add an extra column in the main output data file - basically putting in the... (3 Replies)
Discussion started by: Det7
3 Replies

8. UNIX for Advanced & Expert Users

Variable assignments specified with eval shell built-in

According to the POSIX specifications eval is a special shell built-in, which should imply that variable assignments specified together with it should remain in effect after the built-in completes. Thus one would expect IFS to be changed after this: var=$'a\nb c' $ IFS=$'\n' eval ' for i in... (4 Replies)
Discussion started by: Scrutinizer
4 Replies

9. UNIX for Dummies Questions & Answers

built in variable to hold the name of therunning script...

Hi, I have multiple functions that can be called by any shell script. These functions have inbuilt echo statements to logs their activity into a log file. When I run multiple shell scripts that call these functions, they all log into the same log file and I am not able to differentiate which... (2 Replies)
Discussion started by: new_learner
2 Replies

10. UNIX for Dummies Questions & Answers

Running Built-ins in current shell

Hi, Can any one please describe why I am not able to run any built-in commands in current shell? Thanks. (5 Replies)
Discussion started by: siba.s.nayak
5 Replies
Login or Register to Ask a Question