Hallo,

kann mir jemand sagen, ob es eine Möglichkeit gibt, die BASH ein wenig 
auszutricksen, ohne den Programmierstil, sag ich jetzt mal, zu verlassen?!

Folgendes Szenario:

- Funktionslibary "lib" mit folgendem Inhalt (zur besseren Übersicht habe ich 
  die Zeilen nummeriert.
-------------------------------------------
1  function1() {
2
3  echo "Das ist ein Test"
4  read input
5  echo input
6 }
------------------------------------------

- Skript "main.sh" mit folgendem Inhalt
------------------------------------------
1  #!/bin/bash
2  
3  . lib
4
5  var=`function1`
6  echo "$var"
7  exit
------------------------------------------

Wie man sieht soll in Zeile 4 der lib eine ausgabe auf den Bildschirm 
erfolgen. Das funktioniert aber nicht. Es erscheint lediglich die 
Eingabeaufforderung um die Variable input (Zeile 4 lib) durch die 
Benutzereingaben zu befüllen. In Zeile 5 lib wird dann der Inhalt der 
Variable "input" an die Variable "var" aus "main.sh" Zeile 5 übergeben.

Debuggt man die Shell mit "bash -x main.sh" dann sieht man zwar daß die Shell 
den Echobefehl (Zeile 3 lib) einliest, aber nichts auf den Bildschirm 
ausgibt. Laut der Literatur zur Shell-Skript-Programmierung ist das auch so 
gewollt. Die einzelnen Funktionen werden eingelesen und dann später 
ausgeführt.
Ich kann natürlich den Echo-Befehl in das main Skript stecken, als Abhilfe. 
Das soll hier auch nur ein Bsp. sein. Mich würde nur mal interessieren ob 
jemand weiß wie es unter Beibehaltung der o.g. Zeilen doch möglich ist ERST 
den echo-Befehl auszugeben und DANN die Benutzereingabe zu lesen um sie im
Anschluss an die Variable in main zu übergeben?!

Sobald man im main-Skript die Funktion1 aufruft ohne den Rückgabewert in einer
Variablen zu speichern, dann wird der echo-Befehl on lib ausgegeben.

. lib
function1
exit

Gruss
Thomas


----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an