Per Shell Variable in Datei eintragen?

dochamburg

Mitglied
Salvete!

Habe folgendes Problem: Ich habe ein Shell-Script gebastelt, welches Dateien in einem Ordner (Variable wird beim Aufruf des Scriptes abgefragt, zb. sh move.sh 007203) umbenennt und allerlei Aktionen durchführt.

Nun möchte ich das Script die Variable, den Namen des Ordners (beispielsweise 007203), automatisch an eine bestimmte Stelle in einem PHP-Script eintragen lassen, damit selbige nicht zusätzlich immer per Hand zu editieren ist. Ist das möglich und wenn ja wie?

Shell-Script:
Code:
#!/bin/sh
if [ ! -d "$1" ];
then
echo "Usage: $0 [DIRECTORY]"
exit 1
fi
Dir="$1/*"

usw...
Zu bearbeitendes PHP-Script (zielordner.inc.php):
PHP:
<?php
$ordner = "007203";
?>
"007203" soll vom Shell-Script beim Aufruf überschrieben werden.

Wer kann mir da helfen?

Vielen Dank vorab!


dochamburg
 
Ich denke sed duerfte da geeignet sein.
Code:
sed -i 's@\($ordner = "\).*";@\1lalaland"@' filename
lalaland und filename musst Du natuerlich durch den einzufuegenden Wert und den Dateinamen ersetzen. ;)
 
danke fuer die schnelle nachricht!

es funktioniert.

habe den befehl so modifiziert:

Code:
#!/bin/sh

if [ ! -d "$1" ];
then
echo "Usage: $0 [DIRECTORY]"
exit 1
fi

Dir="$1/*"

chown ibm $1/
chmod 777 $1/

sed -i 's@\($ordner = "\).*";@\1$1"@' zielordner.inc.php
was nicht funktioniert ist, die variable $1 (bei ausfuehren des shell-scriptes mit sh move.sh 007203 angegeben) in den befehl einzutragen. wenn ich das mache, dann schreibt es mir in die zielordner.inc.php "$1" statt 007203.

kann man das umgehen? ansonsten komme ich mit meinem problem vom regen in die traufe und muss trotzdem zusaetzlich ein script per hand editieren.

dank vorab!


dochamburg

edit: hat irgendwie 1x funktioniert. seither funktioniert
Code:
sed -i 's@\($ordner = "\).*";@\1xyz"@' zielordner.inc.php
nicht mehr.
 
Zuletzt bearbeitet:
Das klappt nur einmal da ich ab Ende ein Semikolon vergessen habe.
Probier es mal damit:
Code:
sed -i 's@\($ordner = "\).*";@\1lalaland";@' filename

Oder wenn Du statt einem fixen String lieber eine Variable haben willst sollte Dir das hier helfen koennen:
Code:
sed -i "s@\($ordner = \"\).*\";@\1${1}\"@" filename
 
Schau mal ob das Semikolon in der Datei vorhanden ist. Durch die Expression in meinem ersten Post wurde diese ja geloescht.

habe folgende zwei befehle, die beide nicht funktionieren

sed -i 's@\($ordner = "\).*";@\1002959";@' zielordner.inc.php

(002958 ist der ordner)

und

sed -i 's@\($ordner = \"\).*\";@\1${1}\";@' zielordner.inc.php

kein plan warum.

dochamburg
 
Beim 2. musst Du die '' durch "" ersetzen, da ansonsten der Parameter ${1} nicht interpretiert sondern als Text behandelt wird, wie bei Variablen in Strings in PHP.

Wie gesagt, schau mal in zielordner.inc.php ob in der entsprechenden Zeile am Ende noch das ; vorhanden ist.
 
Beim 2. musst Du die '' durch "" ersetzen, da ansonsten der Parameter ${1} nicht interpretiert sondern als Text behandelt wird, wie bei Variablen in Strings in PHP.
erledigt.
Wie gesagt, schau mal in zielordner.inc.php ob in der entsprechenden Zeile am Ende noch das ; vorhanden ist.
jetzt funktioniert es. semikolon war ernfernt.

vielen dank fuer deine muehe!

dochamburg
 
Zurück