Sponsored Content
Operating Systems OS X (Apple) Help in explaining this echo conundrum. Post 302993800 by Scrutinizer on Tuesday 14th of March 2017 01:46:59 PM
Old 03-14-2017
Note that there is a reason that echo is not part of the POSIX specification. For consistent results, it is best to only use printf

Code:
sh-3.2$ /usr/bin/printf '1\n2\n2\n3\n5\n'
1
2
2
3
5
sh-3.2$ printf '1\n2\n2\n3\n5\n'
1
2
2
3
5

I get
Code:
sh-3.2$ echo '1\n2\n3\n4\n5' | od -bc
0000000   061 012 062 012 063 012 064 012 065 012                        
           1  \n   2  \n   3  \n   4  \n   5  \n                        
0000012
sh-3.2$ /bin/echo '1\n2\n3\n4\n5' | od -bc
0000000   061 134 156 062 134 156 063 134 156 064 134 156 065 012        
           1   \   n   2   \   n   3   \   n   4   \   n   5  \n        
0000016

So in the first case \n is interpreted as newline, in the second case it is not.

--
Interestingly:

When I do:
/bin/bash --posix, which is supposed to be the same as /bin/sh I get:

Code:
bash-3.2$ echo '1\n2\n3\n4\n5' | od -bc
0000000   061 134 156 062 134 156 063 134 156 064 134 156 065 012        
           1   \   n   2   \   n   3   \   n   4   \   n   5  \n        
0000016

Also when bash is invoked without the --posix option

On OSX, apparently it is not a link to /bin/bash as is the case on some Linux distributions, but rather they are two distinct binaries
Code:
sh-3.2$ ls -l /bin/sh /bin/bash
-r-xr-xr-x  1 root  wheel  626272 Sep 14 02:57 /bin/bash
-r-xr-xr-x  1 root  wheel  630464 Sep 14 02:57 /bin/sh

If I make a symlink sh -> /bin/bash
Code:
$ ./sh
sh-3.2$ echo '1\n2\n3\n4\n5' | od -bc
0000000   061 134 156 062 134 156 063 134 156 064 134 156 065 012        
           1   \   n   2   \   n   3   \   n   4   \   n   5  \n        
0000016


Last edited by Scrutinizer; 03-14-2017 at 03:08 PM..
This User Gave Thanks to Scrutinizer For This Post:
 

8 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

explaining awk

i am new to awk scripting. i couldn't figure out how this awk script works can anyone explain? #!/bin/awk -f { for( x=1; x<=NF; ++x) { if( x == 3 ) { continue } print x, $x } } thank you and regards (1 Reply)
Discussion started by: phone_book
1 Replies

2. UNIX for Dummies Questions & Answers

Need help explaining how to use a VPN on a UNIX server with a Mac OS

I have gotten a gig to teach someone how to use a VPN client for a UNIX server on a MAC os. The problem is I have never used UNIX, dont mess with VPN's (my dad has a VPN that I have used a couple of times). I'm currently taking a crash course on UNIX but I was wondering if anyone could help me with... (0 Replies)
Discussion started by: psycopuppy
0 Replies

3. UNIX for Dummies Questions & Answers

Explaining some lines from files : .login and .cshrc

Hello, can anyone explain me please what do those lines do ? From file .login 1) set history=40 2) setenv MACH `uname -s` 3) source /etc/login 4) source ~/$MACH/.login From file .cshrc 1) if ( ! $?prompt) exit 0 (5 Replies)
Discussion started by: bbqtoss
5 Replies

4. UNIX for Dummies Questions & Answers

umask conundrum

Hi All, i was reading up on a umask question on this forum and have a question on this. the umask value on my home PC running on cygwin is 022. when i create a dir it defaults to permission 755, when i create a file it defaults to 644. Now it starts at 777 for dirs and 666 for files and... (1 Reply)
Discussion started by: Irishboy24
1 Replies

5. Shell Programming and Scripting

Conundrum - Flexible way to strip extension

Hi, First post here. I have something that may prove to be difficult. I have the following files: Example1.0.0.tar.gz Example2.tar Example3.zip Example4.0.0.0.0.0.bzip2 I need to remove the file extensions and store as a variable so they look like this: Example1.0.0 Example2... (3 Replies)
Discussion started by: Spadez
3 Replies

6. Shell Programming and Scripting

sudo scripts conundrum

hello; Got a problem running monitoring scripts using sudo ssh.. Mgmt decided to take away root sudoers access.. so most of the scripts ran as: sudo ssh $BOX ... Now I need to run them as: echo $my_pw | sudo -S -l my_user_id $BOX ... I tried this but not working.. Any wisdom/tricks... (3 Replies)
Discussion started by: delphys
3 Replies

7. Shell Programming and Scripting

Help to explaining a command in run dot tcl

Hi, I'm running a rdt (run dot tcl) command, and come accross this line: alias abc 'set ARGS =(\!*); source home123/abc/$ARGS/setup' What does the command exactly do? Please help. (6 Replies)
Discussion started by: mar85
6 Replies

8. IP Networking

iptables conundrum

Ok, if youre reading this prepare yourself.(debian based os) so im trying to do this routing with ip tables, i need to forward/SNAT traffic from 192.168.111.1 to 10.10.10.250, the 192.x.x.x ips are being shoved into a honeyd like program called inetsim so its offline, 10.10.10.125 is connected... (3 Replies)
Discussion started by: Shocco
3 Replies
All times are GMT -4. The time now is 07:17 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy