On Fri, Apr 12, 2013 at 01:14:12PM -0500, address@hidden wrote:
Often I do something like
cmd="command arg"
echo "${cmd}" >>my_log
eval "${cmd}" 2>&1 >>my_log
Your 2>&1 is in the wrong place, if you intended for stderr to be logged
in the file. It should appear *after* the other redirection:
eval "$cmd" >>my_log 2>&1
See http://mywiki.wooledge.org/BashFAQ/055 for explanations.
and many times I have read on this list that storing a command in a
variable is a bad thing to do
The construction you used here is OK for simple commands with no variable
expansions in them. It falls apart very, very quickly when you start
adding any level of complexity at all.
See http://mywiki.wooledge.org/BashFAQ/050 for explanations.
What is a better/safer way of doing this
Since your goal is logging, the better way would be to use "set -x".
See the (second) wiki page for other suggestions for other goals.