PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Script mit Parameter vom at job starten



zagadka
30-05-2007, 15:39
Hallo,
ich versuche bei einem at Job einen Parameter an das Skript mitzugeben.

at -f /home/eins/test.sh now # Ohne Parameter wird der Job ausgeführt

at -f /home/eins/test.sh test now
syntax error. Last token seen: t

Ich habe es mit diversen Anführungszeichen probiert, komme aber nicht dahinter.

Für Tipps bin ich dankbar

Gruß, zagadka

jeebee
30-05-2007, 17:50
-f file Reads the job from file rather than standard input.
also müsstest du eine Datei mit dem Inhalt
/home/eins/test.sh test erstellen und diese mit
at -f /home/eins/die_datei now aufrufen.

zagadka
30-05-2007, 18:07
Hi jeebee,

das ist das Problem. Ich möchte von vielen Skripten (>10), die sich immer nur in einem Parameter unterscheiden auf ein Skript runterkommen. Und diesen Parameter möchte ich an das einzige Skript übergeben.

Das Skript selbst soll/muss von at gestartet werden.

Gruß, zagadka

jan61
10-06-2007, 22:04
...
Ich möchte von vielen Skripten (>10), die sich immer nur in einem Parameter unterscheiden auf ein Skript runterkommen. Und diesen Parameter möchte ich an das einzige Skript übergeben.
...

at akzeptiert keine Parameter. Zumindest habe ich in der man-Page keinen Weg gefunden.

Der folgende Trick ist vielleicht nicht allzu elegant, sollte aber Dein Problem lösen (nicht ausgetestet):
1. Du legst für jeden möglichen Parameter einen Link an:

for p in par1 par2 par3; do
ln /home/eins/test.sh "/home/eins/test ${p}.sh"
done
Damit hast Du in /home/eins für jeden möglichen Aufrufparameter ein eigenes Script (mit einem Leerzeichen im Namen), also in diesem Beispiel:
/home/eins/test.sh # das Original
/home/eins/test par1.sh
/home/eins/test par2.sh
/home/eins/test par3.sh

2. Im Shell-Script test.sh extrahierst Du aus Deinem Scriptnamen den Parameter:

# aus dem Scriptnamen den Parameter extrahieren
PAR=`basename "$0" .sh | cut -f2 -d" "`


3. Jetzt kannst Du im Script mit $PAR arbeiten

4. Deine at-Jobs startest Du mit:
at -f "/home/eins/test par1.sh" now

Das Schöne daran ist, dass die Links keinen Platz verbrauchen und dass Du beim Editieren mit einem vernünftigen Editor tatsächlich auch die Links mit aktualisierst. Wenn Dein Editor Hardlinks kaputtmacht, dann nimm stattdessen Symbolic Links (ln -s).

Jan

zagadka
11-06-2007, 11:31
Danke Dir vielmals für Deine Mühe!!!

Beste Grüße