Yuri Karlsbrun wrote:
> I, probably, need bash-help mailing list, but I could not find it.
> 
> Here is the bash script fragment:
> LOG_FILE="./logfile"
> ...
> >$LOG_FILE
> 
> I supposed that the statement above redirects stdout to the logfile.
> But the following 'echo' statement prints on the screen. The logfile is
> opened. What is the real purpose of the statement above?

A single line with "> FILE" redirects that line's command to the
file.  You did not have a command and so it just created file and put
nothing into it.  This is exactly equivalent to "true > FILE" or more
idiomatically ": > FILE".

What you are asking to do you would do with the exec command.

Either:
  exec >$LOG_FILE
Or:
  exec >$LOG_FILE 2>&1
Or:
  exec >$LOG_FILE 2>&1 </dev/null

Here are some docs:

  help exec

  exec: exec [-cl] [-a name] file [redirection ...]
      Exec FILE, replacing this shell with the specified program.
      If FILE is not specified, the redirections take effect in this
      shell.  If the first argument is `-l', then place a dash in the
      zeroth arg passed to FILE, as login does.  If the `-c' option
      is supplied, FILE is executed with a null environment.  The `-a'
      option means to make set argv[0] of the executed process to NAME.
      If the file cannot be executed and the shell is not interactive,
      then the shell exits, unless the shell option `execfail' is set.

Bob


_______________________________________________
Bug-bash mailing list
Bug-bash@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-bash

Reply via email to