Redirecting command output to a variable in bash fails Redirecting command output to a variable in bash fails bash bash

Redirecting command output to a variable in bash fails


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

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


For nginx possible situation when configtest can be successful with error in config files.Example:

nginx: [warn] conflicting server name "test.com" on 0.0.0.0:80, ignorednginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

for correct check errors in bash scripts need use:

if [[ $((sudo /sbin/service nginx configtest) 2>&1 | grep "failed\|warn" ) ]]; then    echo "ERROR!!!"else    echo "OK!!!"fi