Wie stdout und stderr in bash-Skript mit Dialogfeldern umleiten?

585
coverflower

Für ein einzelnes Skript werden stdout und stderr folgendermaßen in eine Datei umgeleitet:

./myscript.sh 2>&1 | tee -a out_file 

funktioniert gut. Wenn ich versuche, auf die gleiche Weise ein Skript enthält mehrere Dialogfelder laufen mit erstellt Dialog Befehl (und andere Skripte aufrufen)

./main.sh 2>&1 | tee -a out_file 

Die Ausgabedatei enthält aufgrund dieser Felder unerwünschte Zeichen. Zum Beispiel:

#!/bin/bash # myscript.sh  dialog --title "Title" \ --msgbox "Message Box" \ 30 120 date  

erzeugt mit:

$ ./myscript.sh 2>&1 | tee -a myscript.out 

mehrere Zeilen ähnlich wie diese:

[36m[44m [30m[40m[K[22;38H[39;49m(B[m[2;3H[30m[47mMessage Box[22;38H[39;49m(B[m 

Wie bekomme ich stdout und stderr ohne diese Zeichen (für Haupt- und alle nachfolgenden Skripts)? Das wäre im Beispiel die Ausgabe des Datums . Schön zu haben wäre, was ein Benutzer in ein Eingabefeld eingegeben hat.

0
Sie könnten tr verwenden, um es wie 'tr -d' rid '' loszuwerden, also vielleicht `./main.sh 2> & 1 | tr -d 'ﮛ' | tee -a out_file` barlop vor 6 Jahren 0
Wir benötigen Details zu den Skripten und den unerwünschten Zeichen. Bitte erweitern Sie Ihre Frage, um sie aufzunehmen. AFH vor 6 Jahren 0
Versuchen Sie es mit der Option dialog --stdout, `dialog --stdout ...` Paulo vor 6 Jahren 0

0 Antworten auf die Frage