How to redirect error to a file?
Solution 1
The line which causes the error is date =$(date)
, that error is sent to stderr. At that stage, you're not redirecting stderr anywhere. The subsequent line sends stderr to $filename, but it's not that line which causes the error.
One of the ways to get the effect you want, you would run your script and direct stderr to somewhere else at the same time, so,
./myscript 2>> errors.txt
at that point, errors.txt will contain your error.
So the issue is, the line generating the error is an error in the script itself, not an error caused by an external command the script calls which has it's output redirected. i.e. it's the top level script output you need to redirect.
Solution 2
The shell emits an error message when it reaches line 5. The shell's error stream is not redirected at this point.
If you write date= $(date) 2>/dev/null
, the “command not found” message comes from the shell, not from the command whose error stream is redirected. Therefore you'll still see the error message.
To avoid seeing the error message, put the whole command inside a group and redirect the error stream from the whole group:
{ date= $(date); } 2>/dev/null
With braces, the command is still executed in the parent shell, so it can change its environment and other state (not that it does here). You can also put the command in a function body, or in a subshell (commands inside parentheses, which are executed in a separate shell process).
You can redirect the file descriptors of the shell permanently (or at least until the next time you change them) by using a redirection on the exec
builtin with no command name.
exec 2>/dev/null
# From this point on, all error messages are lost
date= $(date)
…
exec 2>/some/log/file
# From this point on, all error messages go to the specified file
Related videos on Youtube
tomrs
Updated on September 18, 2022Comments
-
tomrs over 1 year
I have got to download a zip file from a server using HTTP Authentication in my Scala project.I have the following two questions.
1.) Is there any Scala or Java library that i can use for file download involving Http Authentication ?
2.) Also, any Scala library i can use for unzipping the folder ?
Please Help Thank You.
-
Richard Fortune over 11 yearsAnother strategy would be to surround several lines in your script with
{...} 2>> errors.txt
or(...) 2>> errors.txt
. The second is less efficient but behaves in ways that are useful in certain circumstances. (Read about "subshells" to learn more.) -
ronnie over 11 yearsThanks for suggesting the alternatives. What is
{}
called in bash. I am aware of<()
and$()
process and command substitution respectively but not of{}
.