Shell - Prog

Post Reply
Message
Author
ralf
Posts: 6
Joined: 24. Apr 2002 10:58
Location: Murg

Shell - Prog

#1 Post by ralf »

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

bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Re: Shell - Prog

#2 Post by bakunin »

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

ralf
Posts: 6
Joined: 24. Apr 2002 10:58
Location: Murg

Re: Shell - Prog

#3 Post by ralf »

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.

Chris

Re: Shell - Prog

#4 Post by Chris »

Hi!

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


Gruß
Chris

Chris

Re: Shell - Prog

#5 Post by Chris »

<blockquote><hr>
Wenn ich dich richtig verstanden habe, sollte es mit "test -z" anstelle von "test -s" nimmst!
<hr></blockquote>

Sollte natürlich heissen:

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

(-:

ralf
Posts: 6
Joined: 24. Apr 2002 10:58
Location: Murg

Re: Shell - Prog

#6 Post by ralf »

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

hl
Posts: 3
Joined: 28. Jul 2002 11:14
Location: Vorarlberg

Re: Shell - Prog

#7 Post by hl »

Hallo Ralf

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

Danke Horst

Udo M.

Re: Shell - Prog

#8 Post by Udo M. »

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

Post Reply