Search code examples
linuxapachebashshellterminal

Redirecting command output to a variable in bash fails


I'm trying to redirect command output to a variable:

OUTPUT=$(sudo apache2ctl configtest)

and then to read it:

echo $OUTPUT

When running it the output is the following:

19:19:12 user@user ~ OUTPUT=$(sudo apache2ctl configtest)
Syntax OK
Syntax OK

But the variable stays blank. I've tried the same for other commands and everything works fine.

OUTPUT=$(ls -l)

This writes file list to variable OUTPUT so that it can be read later. What should i do to make it work?


Solution

  • Maybe the output goes to stderr, not stdout? Try this:

    OUTPUT="$(sudo apache2ctl configtest 2>&1)"