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