GNU/Linux >> Znalost Linux >  >> Linux

Přesměrování výstupu příkazu do proměnné v bash se nezdaří

Možná jde výstup na stderr , nikoli stdout ? Zkuste toto:

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

Pro nginx možná situace, kdy configtest může být úspěšný s chybou v konfiguračních souborech. Příklad:

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

pro správnou kontrolu chyb v bash skriptech je třeba použít:

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

Linux
  1. Jak přiřadit výstup příkazu proměnné shellu?

  2. Ukládání výstupu příkazu do proměnné Shell?

  3. Musím při přiřazování jejich výstupu k proměnné citovat substituce příkazů?

  1. Jak nastavit proměnnou rovnou výstupu z příkazu v Grub2?

  2. Příkaz Rm ve skriptu Bash nefunguje s proměnnou?

  3. Automaticky zachytit výstup posledního příkazu do proměnné pomocí Bash?

  1. příkaz pro export bash

  2. Přesměrovat výstup příkazu time v unixu do proměnné v bash?

  3. Podrobný výstup příkazu Bash find