Bash-Skript mit sed mit Variablen in einer for-Schleife?
Ich versuche zu schreiben, ein bash-Skript, das dauert ein paar Variablen, und dann wird ein suchen/ersetzen mit einer bestimmten Datei Suche mit grep, um die Liste der Dateien, die die Zeichenfolge. Ich denke, das Problem, das ich habe, ist, dass die Variablen, die man in sed-ich bin mir nicht sicher, was es sein könnte.
if [ "$searchFiles" != "" -a "$oldString" != "" -a "$newString" != "" ]; then
echo -en "Searching for '$searchFiles' and replacing '$oldString' with '$newString'.\n"
for i in `grep $oldString $searchFiles |cut -d: -f1|uniq`; do
sed -i 's/${oldString}/${newString}/g' $i;
done
echo -en "Done.\n"
else
usage
fi
- Sie müssen doppelte Anführungszeichen für Variablen-substitution in bash-glaube ich -
sed -i "s/${oldString}/${newString}/g" $i;
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie doppelte Anführungszeichen, damit die shell können Variablen ersetzen.
wenn Ihr suchen-oder ersetzen-string Sonderzeichen enthält, die Sie benötigen, Ihnen zu entkommen: Escape-string für eine sed-pattern ersetzen
Doppelte Anführungszeichen verwenden, so die Umwelt-Variablen erweitert werden, von der shell aus, bevor Sie es nennt sed:
Vorsichtig sein: Wenn entweder
oldString
odernewString
enthalten Schrägstriche oder andere regexp-Sonderzeichen, werden Sie interpretiert werden als Ihre Besondere Bedeutung, nicht als literal-Zeichenfolgen.