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
[email protected]
http://lists.gnu.org/mailman/listinfo/bug-bash