PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Inhalt einer Datei als Parameter verwenden??



SniperRifle
18.03.02, 18:53
Hi Leute!;)

Ich suche vergebens nach einer Möglichkeit, wie ich den Inhalt einer Datei als Parameter o. ä. verwenden kann.
Z.B.: In der Datei "param" steht eine einzige Zeile (eigentlich nur 2 Zeichen):

-l

Jetzt will ich dass der Inhalt dieser Datei als Parameter für ls verwendet wird, also dass dann "ls -l" ausgeführt wird.
Wie kann ich das machen???

Oder ein ähnliches Problem: Wie kann ich in einem Shellskript den Inhalt einer Datei auslesen und verwerten???

Ich freue mich über jede Antwort!:)

mfg Chris

Tengri
18.03.02, 19:15
ls $(cat param)

mfg
Tengri

SniperRifle
18.03.02, 19:35
:) Danke für die schnelle Antwort! Genau das was ich brauchte!!! :)

Jetzt kommt gleich die nächste Frage:

Wie kann ich es machen, dass ich nur einen Teil dessen, was in der Datei steht als Parameter verwende?
Also, wenn z.B. "-a -l -n" in der Datei steht, dass dann NUR "-l" als Parameter für ls verwendet wird?

mfg Chris

Tengri
18.03.02, 20:05
ls $(cat param | cut -f2 -d\ )

mfg
Tengri

SniperRifle
18.03.02, 21:16
:)
Nochmals Danke für die Antwort!

Aber ich setz den Schwierigkeitsgrad noch höher!;) Er soll jetzt aus der Datei mit dem Inhalt "-a -l -n" nur den Parameter "-l" verwenden, weiß aber nicht, an welcher stelle er steht, d.h. die Datei könnte auch so aussehen: "-l -n -a"

Wie geht das?

mfg Chris :)

micha
18.03.02, 22:00
Hi,

nur ne Verständnisfrage: Wo ist da die Logik ?
Würdest Du nur den 2ten, 3ten, ... Paramter aus der Datei haben wollen, ok, aber wenn Du schon von vorne herein weisst, dass Du den Parameter -l suchst, kannst Du ihn auch gleich so in das Script packen, oder nicht ?


Gruß micha

Tengri
18.03.02, 22:04
Jetzt versteh ich dich nit mehr so ganz :eek:

Du willst also aus der Datei mit "-l -n -a" nur "-l" heraushohlen egal wo es steht...
Dir is aber schon klar, dass der ganze Spass total sinnlos is wennst eh weisst du willst "-l"?
Aber bitteschön:


for foo in $(cat param)
do
if [ "$foo" = "-l" ]
then
ls "$foo"
fi
done


..oder für die Spezialisten bisserl einfacher:

ls -l

mfg
Tengri

cirad
18.03.02, 23:39
Naja, wenn -l nicht in einem der Parameter in der Datei ist, wird nur ls aufgerufen, wenn es in der Datei ist, wird es mit ls -l aufgerufen. Keine Ahnung, wo sowas Sinn macht, unlogisch ist es aber nicht.

ls $(grep -- -l param)

Tengri
19.03.02, 10:19
Mit ls $(grep -- -l param) nimmt er aber ALLE Parameter aus der Datei falls "-l" dabei is... und nicht nur -l

mfg
Tengri

SniperRifle
19.03.02, 11:07
Hmm, ich war gestern wohl ein bisschen verwirrt :) Verzeiht! :)

Ich will, dass er eine Adresse, die in einer Datei drinsteht, in bestimmte Teile aufsplittet.
Z.B: http://www.irgendwas.com/dir1/dir2/dir3/file.html

Jetzt soll er "www.irgendwas.com" "/dir1/dir2/dir3/" und "file.html" da rausholen, und zwar so, dass ich sie getrennt voneinander verwenden kann.


mfg Chris

PS: Fragt bitte nicht, warum ich so komische Fragen gestellt habe!;)

Tengri
19.03.02, 11:53
host=$(cat param | cut -f3 -d/ )
file=$(basename $(cat param))
middle="/$(dirname $(cat param) | cut -f4- -d/ )/"


Hmm, also langsam werd ich aber schon neugierig was du eigentlich vorhast... :rolleyes:

mfg
Tengri

SniperRifle
19.03.02, 13:04
Hi!

Und wie kann ich eine String-Variable bearbeiten?
z.B.: link="hallo_welt" --> link="hallo"

denn mit cut geht das ja nicht:
link=$(cut -f1 -d_ $link)

mfg Chris

Tengri
19.03.02, 13:44
man cut Kollege ;)

link=$(echo $link | cut -f1 -d_ )

mfg
Tengri

cirad
19.03.02, 17:35
Jups, grep -- -l param geht natuerlich nicht ... eigentlich schade, die einfachheit hatte mich gefreut. ;)

SniperRifle
19.03.02, 22:12
Hmm, also langsam werd ich aber schon neugierig was du eigentlich vorhast... :rolleyes:

Ich wollt mir eigentlich nur ein Script basteln, welches mir automatisch Dateien von einem FTP lädt. ;)


Jetzt hab ich doch schon wieder ne Frage :D:D :

Ich habe folgendes Script:


(
echo open $remotehost
echo user $user $pass
echo cd $remotedir
echo type binary
echo get $remotefilename $updir/$remotefilename
echo quit
) | ftp -n -i

rm -f $dlscript


Dieses Script wird von einem anderen Script erzeugt und dann ausgeführt. Am Ende löscht sich dieses Script selbst.
Aber wie kann dieses oben aufgeführte Script erkennen, dass beim FTP Fehler aufgetreten sind (z.B. Transfer abgebrochen; kein weiteres Einloggen möglich, o.ä.) ? Es soll sich dann nicht löschen, sondern nach einer gewissen Zeit wieder ausgeführen, bis die Datei vom FTP komplett übertragen wurde.
Da hast du bestimmt noch was auf Lager, oder?;)

mfg Chris :)

SniperRifle
20.03.02, 18:35
Hast du wirklich keine Lösung??:(

mfg Chris

Tengri
20.03.02, 18:53
Sorry, hab den Thread nit weiter verfolgt.. :o

Nein Lösung hab ich dafür nit.. zumindest nit auf die Schnelle... aber was spricht dagegen für den ftp teil das gute alte wget zu bemühen?
Das kümmert sich besser um alle möglichen Übertragungsfehler als man das mit Shellscripts jemals hinbekommen könnte...

mfg
Tengri