Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[gelöst]bash-skript <-> sed
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German)
View previous topic :: View next topic  
Author Message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1176

PostPosted: Fri Aug 27, 2010 12:45 pm    Post subject: [gelöst]bash-skript <-> sed Reply with quote

Hallo,
ich habe grad ein bash-skript geschrieben, welches mir in einem Satz von header dateien von OgreBullet die "#include" Anweisungen anpassen soll. wenn ich das bash-skript laufen lasse, dann werden die passenden sed-befehle erzeugt und ausgeführt. Allerdings werden die Dateien nicht geändert, der Inhalt liegt unverändert vor. Nur das Dateidatum wird aktualisiert. (Bei sed -i). Wenn ich mir die Befehle jedoch mit "echo" ausgeben lasse, und dann nochmal so wie sie dastehen eingebe (copy&paste), dann funktionieren sie auch.
Frage: Muss man da bei sed noch was beachten, wenn man es von einem bash-skript aus aufruft?


zum Beispiel soll
Code:
#include "OgreBulletCollisionsPreRequisites.h"
zu
Code:
#include <OgreBullet/Collision/OgreBulletCollisionsPreRequisites.h>
werden.
das skript:
Code:

#!/bin/bash

FILES=( $(find -name *.h) )

#echo $FILES
n=0

for i in ${FILES[@]}; do
        OLD_INCLUDES[ ${n} ]="\"$( echo ${i} | sed 's!./Dynamics/!!' | sed 's!./Collisions/!!' )\""
        NEW_INCLUDES[ ${n} ]="<OgreBullet$( echo ${i} | sed 's!./!/!' )>"
        n=$(( $n + 1 ))
done

if [[ ${#OLD_INCLUDES[@]} != ${#NEW_INCLUDES[@]} ]]; then
        echo "FEHLER!!"
        exit
fi

for i in ${FILES[@]}; do
        echo $i
        for j in $( seq 0 $(( ${#OLD_INCLUDES[@]} -1 )) ); do
                #echo $j
                echo "sed 's!${OLD_INCLUDES[$j]}!${NEW_INCLUDES[$j]}!g' \"${i}\""
                sed 's!${OLD_INCLUDES[$j]}!${NEW_INCLUDES[$j]}!g' "${i}"
                #sed -i 's!${OLD_INCLUDES[$j]}!${NEW_INCLUDES[$j]}!g' "${i}"
        done
done


danke für eure Hilfe!
Christian


Last edited by Christian99 on Sat Aug 28, 2010 10:30 am; edited 1 time in total
Back to top
View user's profile Send private message
mv
Watchman
Watchman


Joined: 20 Apr 2005
Posts: 6281

PostPosted: Fri Aug 27, 2010 8:31 pm    Post subject: Reply with quote

man quote: Beim echo quotest Du mit "...", bei sed mit '...'. Im ersten Fall werden Variablen ersetzt, im zweiten nicht. Zum Debuggen gibt es übrigens "set -x".
Back to top
View user's profile Send private message
Christian99
Veteran
Veteran


Joined: 28 May 2009
Posts: 1176

PostPosted: Sat Aug 28, 2010 10:30 am    Post subject: Reply with quote

Oh mann, ja. Ich hab das zwar scho gelesen, aber dachte das betrifft mich nicht. Weil wenn ich den ganzen Befehl mit echo ausgebebe, dann hats ja gepasst. da haben aber die äußeren "" die inneren '' gecancelt. da hab ich auf der Leitung gestanden...
Und das mit dem set -x ist auch gut. Muss ich mir mal merken.

Schönen Dank
Christian
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum