sh - POSIX Shell backslash confusion -


i trying create shell script simple functionality, seems can not wrap head how handle backslashes correctly. 1 of functions this:

#!/bin/sh  func() {     cmd="$*"     printf "%s\n" "$cmd"     echo -e $cmd } func '%{name}\\n' 

this correct output, need it:

%{name}\\n %{name}\n 

now problem is, can not use "echo -e", script needs run on *nix system, echo command not have "-e" flag (hpux instance), why have use sh , not bash. want make script portable possible, i'd stay clear of using tr/sed or (even worse) script languages.

the format of input string can chosen arbitrarily. using %{name} of reason, because if regular chars, work:

#!/bin/sh  func() {     cmd="$*"     printf "%s\n" "$cmd"     printf $cmd     echo } func 'name\\n' 

unfortunately breaks characters such "%":

%{name}\\n func.sh: line 6: printf: `{': invalid format character 

how can desired result, (hopefully) using printf, in understanding portable function use?

you can use %b in printf:

func() { cmd="$@"; printf "%s\n%b" "$cmd" "$cmd"; } 

then call as:

func '%{name}\n\n' 

this print:

 %{name}\n\n %{name}  

Comments

Popular posts from this blog

facebook - android ACTION_SEND to share with specific application only -

python - Creating a new virtualenv gives a permissions error -

javascript - cocos2d-js draw circle not instantly -