[shell] echo vs printf
在bash里有以下区别
$ str= " 1 2
3 x"
$ echo "$str" | xxd
00000000: 2020 3120 3220 0a20 3320 780a 1 2 . 3 x.
$ printf "%s\n" $str
1
2
3
x
$ printf "%s\n" "$str"
1 2
3 x
$ echo_eval() { printf "%s\n" "$@" ; }
$ echo_eval ls "-l e"
ls
-l e
$ echo_eval() { printf "%s\n" $@; }
$ echo_eval ls "-l e"
ls
-l
e
$ echo_eval() { printf "%s" "$@" ; }
$ echo_eval ls "-l e"
ls-l e
$ echo_eval() { printf "%s" $@; }
$ echo_eval ls "-l e"
ls-le