Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Shell - Prog

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ralf



Anmeldungsdatum: 24.04.2002
Beiträge: 6
Wohnort: Murg

BeitragVerfasst am: 24. Apr 2002 12:23   Titel: Shell - Prog

hallo zusammen
bin im zusammenhang mit einem shell-script auf was "blödes" gestossen - nicht lachen.
schreibe ein script:
----schnipp---
passwd_dat=`cat /root/passwd-dat`
if test -s $passwd_dat
then
clear
echo " Der Pfad zu passwd-Datei ist nicht gesetzt !"
echo " Bitte den Pfad zu eingeben:"
read pass
echo "$pass" >/root/passwd-dat
passwd_dat=`cat /root/passwd-dat`
echo " Danke. Der Wert ist: $passwd_dat"
sleep 3
fi
----schnipp----
was muss ich (anders) machen, dass nicht der inhalt von passwd gelesen wird sondern in $passwd_dat der pfad zum file abgelegt wird?
lass ich das script laufen:
- fragt es nach dem pfad,
- den geb ich ein, wird sogar ins file /root/passwd-dat geschrieben + gespeichert (inhalt; /etc/passwd). - doch beim nächsten start werde ich wieder gefragt. ;-(

gruss und vielen dank ralf
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 24. Apr 2002 14:20   Titel: Re: Shell - Prog

Hi!

Was bei dir passiert ist folgendes: Beim ersten Start wird passwd_dat auf "" gesetzt, weil /root/passwd-dat nicht existiert:

passwd_dat=`cat /root/passwd-dat`

Dann wird beim Test $passwd_dat durch nichts ersetzt (nicht durch ""!):

if test -s $passwd_dat

Also wird "test -s" ohne weiteres Argument aufgerufen, und das ergibt lustigerweise 0 (also "Erfolg"), obwohl es eigentlich natürlich ein völlig falscher Aufruf des Programms ist.

Wenn ich das richtig verstehe, ist der Test völlig falsch und müsste lauten (erste Zeile also weglassen):

if test ! -s /root/passwd-dat

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

ralf



Anmeldungsdatum: 24.04.2002
Beiträge: 6
Wohnort: Murg

BeitragVerfasst am: 24. Apr 2002 16:33   Titel: Re: Shell - Prog

hallo wolfgang
erstmal danke für deine antwort. leider lösst sie mein problem nicht. ob ich mich zu "blöd" ausgedruckt habe ?
das script soll eigentlich wie folgt funktionieren (was es zum teil ja bereits macht):
- beim start den variablen werte zuweisen die es aus diversen text-files einliest. zb/root/passwort-dat
- existiert das file nicht, respektive hat einen inhalt =0 (leer), soll es den wert erfragen + und ablegen.
- existiert das file mit einem inhalt grösser 0, dann soll der inhalt des files (zb /root/passwd-dat) der variable zugeordnet werden (ohne frage nach dem wert).
zum beispiel (und hier vermute ich den "fehler"):
- eingabe zu der frage nach dem passwort-file:
/etc/passwd
- der wert wird gespeichert im file /root/passwd. (ist auch nach dem beenden des scripts noch da)
- script neu starten und schon werde ich wieder gefragt.
- trag ich nun zum beispiel: /etc/passwdx ein, so werde ich beim neustart des script nicht gefragt.

es scheint ein problem zusein, dass /etc/passwd ein file mit inhalt ist aber ich möchte nicht den inhalt sondern den pfad abspeichern, da ich im script über die variable den pfad brauche.

gruss ralf, der grübler


ps gebe es gerne zu, dass ich nicht so viel verstehe zu shell-scripts.
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Chris
Gast





BeitragVerfasst am: 25. Apr 2002 19:58   Titel: Re: Shell - Prog

Hi!

Wenn ich dich richtig verstanden habe, sollte es mit "test -z" anstelle von "test -s" nimmst!


Gruß
Chris
 

Chris
Gast





BeitragVerfasst am: 25. Apr 2002 20:00   Titel: Re: Shell - Prog



Wenn ich dich richtig verstanden habe, sollte es mit "test -z" anstelle von "test -s" nimmst!



Sollte natürlich heissen:

Wenn ich dich richtig verstanden habe, sollte es mit "test -z" anstelle von "test -s" funktionieren!

(-:
 

ralf



Anmeldungsdatum: 24.04.2002
Beiträge: 6
Wohnort: Murg

BeitragVerfasst am: 26. Apr 2002 10:32   Titel: Re: Shell - Prog

hallo zusammen
danke allen für ihre hilfe. ich denke ich hab's.
anstelle von /etc/passwd ablegen lassen: etc/passwd ins ablage-file eintragen. also ohne führendes /. das funktioniert. und dann einfach mit /$passwd_dat im shript arbeiten.
ich hoffe, dass dies "sauber" ist.

nochmals allen danke und
gruss ralf
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

hl



Anmeldungsdatum: 28.07.2002
Beiträge: 3
Wohnort: Vorarlberg

BeitragVerfasst am: 28. Jul 2002 21:33   Titel: Re: Shell - Prog

Hallo Ralf

Kannst du mir erklären für was dieser Umweg mit dem ersten / gut ist.

Danke Horst
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

Udo M.
Gast





BeitragVerfasst am: 28. Jul 2002 22:36   Titel: Re: Shell - Prog

Das habe ich mich im April auch schon gefragt, sauber ist so etwas jedenfalls nicht!
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy