-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hei Heiko; Hi Christian!
... die Spenden willst Du dann sicher großzügig an die Unterstützer des Projekts weiterleiten :)
Darüber ließe sich reden - eine noch großzügigere Spendenbescheinigung natürlich vorausgesetzt...! ;-]
Im Script: COLUMNS=$(tput cols) LINES=$(tput lines)
Das ist ein sehr guter Tipp! Werde ich mal testen! Ich frag' mich nur, warum ich bei meinen Google-Recherchen nicht auf eine einzige Seite gestoßen bin, auf der 'tput' erwähnt wurde. Wenn ich mir die Seite http://www.gnu.org/software/termutils/manual/termutils-2.0/html_chapter/tput... so ansehe, scheint das ja ein sehr mächtiger Befehl zu sein?!? *staun*
Da es für die Bash ist, mal ein paar kleine Änderungsanregungen:
...immer gerne gesehen! Man kann ja nur dazulernen!
for i in `seq 1 $1`; do echo; done
for i in $(seq 1 $1); do echo; done
Is' das jetzt nur 'ne kosmetische Korrektur oder hat das noch einen tieferen Sinn (Vorteil?), den ich nicht (er)kenne...?
Besser:
cat <<-EOT Benutzung .. EOT
OK! Das leuchtet mir vom Sinn her ein...
shift;shift;shift # Anzahl/Tempo/Richtung ??berspringen => Zeilenrest ist Text!
shift 3
Gut; klingt auch logisch!
zeilen=`expr $hoehe / 2` # vertikale Bildschirmmitte ermitteln
zeilen=$(( hoehe / 2 ))
Mit solchen Konstrukten (von denen ich auch einige im Internet fand), habe ich auch rumexperimentiert, damit aber zum Teil Fehler von wegen unverträglicher Variablentypen etc. erhalten. Ich versuch's aber noch mal mit dieser Notation...
Ich wuerde mich nicht auf diese Variablen verlassen.
Warum eigentlich? Wo gibt's da Probleme? Nach einmaliger Eingabe auf der Shell konnte ich das Fenster immer wieder in der Größe ändern und der Text passte immer!
Frage besser mit
tput das Terminal ab:
breite=$(tput cols) hoehe=$(tput lines)
Danke! Siehe oben!
BTW: Wofür steht das Konstrukt $(....)? Oder anders gefragt: Wann verwende ich `...` und wann $(...) ?? Ich weiß, dass ich mit der `...`-Variante einer Variablen das Ergebnis eines Befehls/Kommandos aus der Shell übergeben kann.
Danke Euch beiden auf alle Fälle für die Hinweise!!!
CU Stefan
Hallo Stefan,
On Tue, Mar 13, 2007 at 14:00:02 +0100, Stefan Schmitt wrote:
Ich frag' mich nur, warum ich bei meinen Google-Recherchen nicht auf eine einzige Seite gestossen bin, auf der 'tput' erwaehnt wurde. Wenn ich http://www.gnu.org/software/termutils/manual/termutils-2.0/html_chapter/tput... so ansehe, scheint das ja ein sehr maechtiger Befehl zu sein?!? *staun*
Das Tool tput hat nicht direkt was mit Shellprogrammierung zu tun, sondern mit Terminals. Tput ist dabei die Kommandoschnittstelle zur terminfo-Bibliothek, die wiederum eine Abstraktionsschicht fuer die Terminalansteuerung ist. So muss man sich z.B. nicht darum kuemmern, ob ein Terminal-Reset durch die Zeichenfolge ESC c oder irgendwas anderes ausgeloest wird.
cat <<-EOT Benutzung .. EOT
OK! Das leuchtet mir vom Sinn her ein...
So ein Konstrukt nennt man "here document".
zeilen=`expr $hoehe / 2`
zeilen=$(( hoehe / 2 ))
Mit solchen Konstrukten (von denen ich auch einige im Internet fand), habe ich auch rumexperimentiert, damit aber zum Teil Fehler von wegen unvertraeglicher Variablentypen etc. erhalten. Ich versuch's aber noch mal mit dieser Notation...
Der Unterschied ist, dass im ersten Fall das externe Programm "expr" aufgerufen und dessen Ausgabe in die Zeile eingesetzt wird, waehrend im zweiten Fall die bash selbst das Auswerten des Ausdrucks uebernimmt. Fuer den zweiten Fall gibt es noch diese Schreibweise: $[ hoehe / 2 ]
Mit einer echten Bourne-Shell (/bin/sh) ohne bash-Komfort muss man das externe expr verwenden. Ueberhaupt sollte man sich nicht zu sehr daran gewoehnen, dass /bin/sh ein Symlink auf /bin/bash ist (siehe aktuelles Ubuntu).
Ich wuerde mich nicht auf diese Variablen verlassen.
Warum eigentlich? Wo gibt's da Probleme?
Zumindest werden sie nicht per Default an Subprozesse exportiert.
BTW: Wofuer steht das Konstrukt $(....)? Oder anders gefragt: Wann verwende ich `...` und wann $(...) ?
Beides steht fuer Kommandosubstitution, also das Einsetzen der Standardausgabe des Kommandos zwischen den ` ` in die aktuelle Zeile. Die Schreibweise mit Backticks ` ` ist Bourne-Shell konform, die mit runden Klammern ist ein Bashismus. Vorteil an der Schreibweise $( ) ist, dass sie Schachtelung erlaubt.
Gruss, Chris
Christian Perle chris@linuxinfotag.de (Di 13 Mär 2007 15:15:24 CET): ...
externe expr verwenden. Ueberhaupt sollte man sich nicht zu sehr daran gewoehnen, dass /bin/sh ein Symlink auf /bin/bash ist (siehe aktuelles Ubuntu).
Ich hatte extra nachgesehen, er hatte '#! /bin/bash', und dann ist das aus meiner Sicht legal, denn es ist eben "irgend ein Scriptinterpreter", wie Perl/Python/PHP/...
Hallo Christian,
On 3/13/07, Christian Perle chris@linuxinfotag.de wrote:
Mit einer echten Bourne-Shell (/bin/sh) ohne bash-Komfort muss man das externe expr verwenden.
$ dash $ echo $(pwd) /home/twerner $ echo $((4/2)) 2
Geht also auch mit anderen Shells.
Viele Grüße, Torsten
Hallo Torsten,
On Tue, Mar 13, 2007 at 21:14:15 +0100, Torsten Werner wrote:
$ dash $ echo $(pwd) /home/twerner $ echo $((4/2)) 2
Geht also auch mit anderen Shells.
Stimmt, das hatte ich mit ash verwechselt. Dieses hier haette ich dash auch nicht zugetraut:
$ a=laber $ echo ${a%b*} la
Gruss, Chris
lug-dd@mailman.schlittermann.de