Mój skrypt bash zawiera polecenie clear
, które po wykonaniu przez dialog
spowoduje pojawienie się dziwnych liter. Jak mogę nadal używać polecenia clear
bez wyświetlania tego wyniku w oknie dialogowym?
Oto przykład, jak to zrobić:
#!/bin/bash echo "starting..." clear echo "" echo "End"
Używam dialog
czegoś takiego:
bash /tmp/1.sh | dialog --progressbox 30 80
Odpowiedź
Możesz przekierować wyjście clear
do terminala:
#!/bin/bash echo "starting..." clear >$(tty) echo "" echo "End"
clear
zapisuje na swoje standardowe wyjście, które (po przekierowaniu w ten sposób) może różnić się od skryptu ”.
Komentarze
- u mnie prawie działa, ponieważ z jakiegoś powodu, jeśli masz ' sleep ' polecenie również między poleceniem echo ' s okno dialogowe jest całkowicie zniekształcone. po prostu dodaj ' sleep 1 ' między polecenie echo i zobacz, aby je zasymulować.
- to inny problem: zapisywanie przez potok, dane nie są buforowane liniowo, a
sleep
działa, aby to uwidocznić.