[bash] sed frage

tevil

tevil

Grünschnabel
Hallo!
Ich versuche mittels script in einer configdatei vor dem compilieren etwas zu ersetzen
z.B.: # CONFIG_BUNZIP2 is not set soll CONFIG_BUNZIP2=y werden

Mein Versuch sieht so aus:
Commandline funktioniert:
Code:
sed '/# CONFIG_BUNZIP2 is not set/s//CONFIG_BUNZIP2=y/g' busybox.config > busybox.config.new
Script nicht:
Code:
for wort in "CONFIG_BUNZIP2" "CONFIG_DIRNAME" "CONFIG_DOS2UNIX" "CONFIG_TEE" "CONFIG_USLEEP" "CONFIG_WHO" "CONFIG_AWK" "CONFIG_ADDGROUP" "CONFIG_DELGROUP" "CONFIG_ADDUSER" "CONFIG_DELUSER" "CONFIG_GETTY" "CONFIG_CROND" "CONFIG_CRONTAB" "CONFIG_ARPING" "CONFIG_FTPGET" "CONFIG_FTPPUT" "CONFIG_NETSTAT" "CONFIG_TELNET" "CONFIG_TRACEROUTE" "CONFIG_FDISK"
	do
	raute='# '
	isnot=' is not set'
	jo='=y'
	worte=$raute$wort$isnot
	nocha=$wort$jo
	echo $worte soll $nocha werden
		sed '/$raute$wort$isnot/s//$wort$jo/g' busybox.config > busybox.config.backup
		cp busybox.config.backup busybox.config
	done
Sieht vielleicht jemand den Fehler, bin eigentlich noch bei den ersten Gehversuchen.
Danke.
 
Zuletzt bearbeitet:
Code:
sed '/$raute$wort$isnot/s//$wort$jo/g' busybox.config > busybox.config.backup

Schuss ins Blaue: Variablen werden nicht substituiert da innerhalb von ''

Zudem weiss ich nicht ob das so funktioniert, normalerweise ist doch:
Code:
sed s/suche/ersetze/g
 
Das seltsame an der sache ist, das wenn ich die variablen direkt im command reinklopfe und den befehl dann ,so wie früher gschrieben, ausführe, funktionierts.

Und das versteh ich jetzt gar net :think:
Habs für momentan aufgegeben und per hand gemacht.

Aber vielleicht wissts ihr einen anderen weg, wie ich nur bei den zeilen ,wo gewünscht, den Kommentar entfernen und auch den parameter setzen kann.
Danke
 
Jetzt hob is :D

Code:
for wort in "CONFIG_BUNZIP2" "CONFIG_DIRNAME" "CONFIG_DOS2UNIX" "CONFIG_TEE" "CONFIG_USLEEP" "CONFIG_WHO" "CONFIG_AWK" "CONFIG_ADDGROUP" "CONFIG_DELGROUP" "CONFIG_ADDUSER" "CONFIG_DELUSER" "CONFIG_GETTY" "CONFIG_CROND" "CONFIG_CRONTAB" "CONFIG_ARPING" "CONFIG_FTPGET" "CONFIG_FTPPUT" "CONFIG_NETSTAT" "CONFIG_TELNET" "CONFIG_TRACEROUTE" "CONFIG_FDISK"
	do
	raute="# "
	isnot=" is not set"
	jo="=y"
	worte=$raute$wort$isnot
	nocha=$wort$jo
	# echo \"$worte\" soll \"$nocha\" werden
		sed "/$raute$wort$isnot/s//$wort$jo/g" busybox.config > busybox.config.backup
		cp busybox.config.backup busybox.config
	done
Ich hab in der Zeile mit sed die ' mit "ersetzt.
Jetzt gehts, komisch...
 
Logisch:
echo 'ich bin joel' = ich bin joel
echo 'ich bin $USER' = ich bin $USER
USER=joel
echo "ich bin $USER" = ich bin joel

Innerhalb von '' werden Variablen nicht ersetzt, innerhalb von "" schon.

Gruss
Joel
 

Ähnliche Themen

Switche abfragen über Script

sed in awk

Zugriff Ubuntu 16.04. auf Freigabe 18.04. LTS nicht möglich

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

Crontab und Scripts - Problem

Zurück
Oben