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