Mijn bash-script bevat het clear commando, dat wanneer uitgevoerd via dialog commando zal resulteren met vreemde letters. Hoe kan ik nog steeds het clear commando gebruiken zonder deze uitvoer in het dialoogvenster te zien?
Dit is een voorbeeld van hoe dit te produceren:
#!/bin/bash echo "starting..." clear echo "" echo "End"
Ik “gebruik de dialog ongeveer zo:
bash /tmp/1.sh | dialog --progressbox 30 80
Antwoord
Je zou de uitvoer van clear kunnen omleiden naar de terminal:
#!/bin/bash echo "starting..." clear >$(tty) echo "" echo "End"
clear schrijft naar zijn standaarduitvoer, die (wanneer omgeleid op deze manier) kan verschillen van de script “s standaard output.
Reacties
- het werkt bijna voor mij, want om de een of andere reden heb je ' sleep ' commando ook tussen echo ' s commando de dialoog volledig vervormd. voeg gewoon ' sleep 1 ' toe tussen het echo-commando en kijk om het te simuleren.
-
sleepis een ander probleem: als je door een pipe schrijft, worden de gegevens niet in een lijn gebufferd, en desleepmaakt dat duidelijk.