GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Das Umleiten der Befehlsausgabe an eine Variable in Bash schlägt fehl

Vielleicht geht die Ausgabe an stderr , nicht stdout ? Versuchen Sie Folgendes:

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

Für nginx mögliche Situation, wenn der Konfigurationstest mit Fehlern in den Konfigurationsdateien erfolgreich sein kann. Beispiel:

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

Für die korrekte Überprüfung von Fehlern in Bash-Skripten muss Folgendes verwendet werden:

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

Linux
  1. Bash-Scripting(I)

  2. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  3. Ausgabe des Befehls in Shell-Variable speichern?

  4. Muss ich Befehlssubstitutionen in Anführungszeichen setzen, wenn ich ihre Ausgabe einer Variablen zuweise?

  5. Warum ist das Setzen einer Variablen vor einem Befehl in Bash legal?

Bash-Exportvariable

Bash-Wartebefehl

Bash-printf-Befehl

Wie setze ich eine Variable gleich der Ausgabe eines Befehls in Grub2?

Bash Beginner Series #2:Variables in Bash Shell Scripting verstehen

Ausgabe des Befehls nach Spalten mit Bash aufteilen?