bash text ausgabe in gleicher zeile ?
bash text ausgabe in gleicher zeile ?
Hallo,
ich wollte mal fragen wie das funktioniert bei manchen scripten wenn sie starten sieht man als Beispiel:
starting services foobar .... und dann nach einer Weile wenn der Service gestartet wurde erscheint auf der gleichen Zeile "OK" dahinter, oder rechts am Bildschirm.
Wie schreibt man so etwas, also wie müsste der code aussehen unter bash in einem script ?
Also der Ablauf ist denke ich klar 1) Meldung 2) programm starten 3) in der gleichen Zeile dann "OK" oder "Failed" ausgeben.
Bloss weiss ich noch nicht wie man so etwas schreibt vielleicht ist ja einer so nett von euch und kann mir mal ein kleines beipiel coden
Danke
ren22
ich wollte mal fragen wie das funktioniert bei manchen scripten wenn sie starten sieht man als Beispiel:
starting services foobar .... und dann nach einer Weile wenn der Service gestartet wurde erscheint auf der gleichen Zeile "OK" dahinter, oder rechts am Bildschirm.
Wie schreibt man so etwas, also wie müsste der code aussehen unter bash in einem script ?
Also der Ablauf ist denke ich klar 1) Meldung 2) programm starten 3) in der gleichen Zeile dann "OK" oder "Failed" ausgeben.
Bloss weiss ich noch nicht wie man so etwas schreibt vielleicht ist ja einer so nett von euch und kann mir mal ein kleines beipiel coden
Danke
ren22
Re: bash text ausgabe in gleicher zeile ?
ok denke habe eine Lösung gefunden:
oder wenn das nicht funktioniert
quelle:http://www.tippscout.de/bash-echo-zeile ... _5937.html
Danke
Code: Alles auswählen
#!/bin/sh
echo 'Eine Zeile mit Umbruch';
echo 'Eine Zeile ohne Umbruch, \c';
echo 'direkt gefolgt von einer weiteren Zeile.';
Code: Alles auswählen
#!/bin/bash
echo 'Eine Zeile mit Umbruch';
echo -n 'Eine Zeile ohne Umbruch, ';
echo 'direkt gefolgt von einer weiteren Zeile.';
Danke
Re: bash text ausgabe in gleicher zeile ?
Code: Alles auswählen
echo bla ; echo blubb
echo -n bla ; echo blubb
Es macht übrigens viel wacher, den Kaffee über die Tastatur zu kippen, statt ihn zu trinken.
Re: bash text ausgabe in gleicher zeile ?
hallo gibt es auch die Möglichkeit das, als Beispiel "OK" immer untereinander auszugeben? So sieht bei mir die Ausgabe aus... sieht nicht toll aus
Danke
ren22
ich hätte gerne das, dass "OK" immer untereinander bei der Ausgabe erscheint.. wie funktioniert das ?startete dienst: foobar1 ... OK
startete dienst: foobarof1 ... OK
startete dienst: foobarofbar1 ... OK
startete dienst: foobarofbarfoo1 ... OK
Code: Alles auswählen
startete dienst: foobar1 ... OK
startete dienst: foobarof1 ... OK
startete dienst: foobarofbar1 ... OK
startete dienst: foobarofbarfoo1 ... OK
Danke
ren22
Re: bash text ausgabe in gleicher zeile ?
Code: Alles auswählen
echo -ne "Nummerino 1: \t " ; echo "Ok."
echo -e "Nummer 2: \t Ok."
echo -n "Nummer Drei:" ; echo -e "\t Ok."
Re: bash text ausgabe in gleicher zeile ?
Danke für die Antwort, also "\t" soll wohl ein Tabulator darstellen wie ich das verstehe, soweit so gut, gibt es noch ein Möglich zusagen, wie als Bsp. (HTML, margin="right") das "OK" vom rechten Rand aus zu zentrieren dann könnte man das "OK" in eine Funktion packen welchen das "OK" immer an der selben stelle ausgibt vom rechten rand aus.
Die Lösung finde ich nicht so toll hier :
hallo \t\t\tOK
hallowelten \t\tOK
ichfahreganzlangsam \tOK
Danke
Die Lösung finde ich nicht so toll hier :
hallo \t\t\tOK
hallowelten \t\tOK
ichfahreganzlangsam \tOK
Danke
Re: bash text ausgabe in gleicher zeile ?
Code: Alles auswählen
#!/bin/bash
print_fmt_status() {
text="${1:-text}"
status="${2:-status}"
cols="$(tput cols)"
pad="$((cols - 1 - ${#text} - 1 - ${#status} - 1))"
padding=" "
for (( ; pad-- > 0; )); do
padding="$padding "
done
echo " $text$padding$status "
}
print_fmt_status
print_fmt_status 'foo bar' 'ok'
print_fmt_status 'foo bar' 'broken'
print_fmt_status 'lorem ipsum dolor sit amet' 'ok'
print_fmt_status 'lorem ipsum dolor sit amet' 'broken'
Code: Alles auswählen
#!/bin/sh
print_fmt_status() {
text="${1:-text}"
status="${2:-status}"
cols="$(tput cols)"
pad="$((cols - 1 - ${#text} - 1 - ${#status} - 1))"
padding=" "
for fnord in $(seq "$pad"); do
padding="$padding "
done
echo " $text$padding$status "
}
print_fmt_status
print_fmt_status 'foo bar' 'ok'
print_fmt_status 'foo bar' 'broken'
print_fmt_status 'lorem ipsum dolor sit amet' 'ok'
print_fmt_status 'lorem ipsum dolor sit amet' 'broken'
- ein Leerzeichen
- die Textlaenge
- ein Leerzeichen
- die Statustext-Laenge
- ein Leerzeichen
Die Ausgabe sieht in einem 80x24er Terminal so aus:
Code: Alles auswählen
text status
foo bar ok
foo bar broken
lorem ipsum dolor sit amet ok
lorem ipsum dolor sit amet broken
Ahja, und man kann natuerlich die Helfer-Funktionen (/lib/lsb/init-functions) vom LSB-Zeugs nehmen, anstatt das nochmal selbst zu implementieren.
Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: bash text ausgabe in gleicher zeile ?
Für genaues Positionieren und Manipulieren könnte man auch über die Verwendung eines Hilfsmittels, wie z.B. curses, nachdenken.