Difference between echo and @echo in unix shells
That's a Makefile-specific thing; it has nothing to do with shell scripts.
Recipes that begin with @
do not echo the command. That is to say, with a Makefile
foo: echo foo
You get
$ make foo # <-- this is meant to be the command you enter in the shellecho foofoo
Whereas with a Makefile
foo: @echo foo
it is
$ make foofoo
applemcg.$ fbdy newest trace_anyfunction newest{ trace_call $# $*; [[ -f "$1" ]] || { trace_call NO $1; return 1 }; t=$1; shift; while [[ -n "$1" ]]; do [[ "$t" -ot "$1" ]] && { trace_call NEWER $1 than $t; return 1 }; shift; done; trace_call NEWEST $t; return 0}function trace_any{ printf $* 1>&2}applemcg.$
so, the "make paradigm" is
newest outputfile inputa inputb... || { command input... > outputfile}
and you cat toss your makefiles on the scrap heap of history.