#! /usr/bin/ksh <- hier den pfad zu der shell die du nutzen willst
grep ^CONSOLE=/dev/console /etc/default/login
if [ $? = 0 ]
then
sed 's!CONSOLE=\/dev\/console!\#CONSOLE=\/dev\/console' /etc/default/login
fi
Ich habe das sed statement nicht getestet...
Wenn Du (sinnvollerweise) ein '!' als Trennzeichen nimmst, anstelle des üblichen '/' dann brauchst Du selbigen nicht mehr zu schützen. Ausserdem fehlt noch ein '!' als Abschluss des sed Kommandos:
sed 's!CONSOLE=/dev/console!#CONSOLE=/dev/console
!'
Weiteres "Problem": Der sed ist ein
Stream
Editor und pustest seine Ausgabe also erstmal auf stdout raus. Um Dateien "in place" zu editieren gibt es ed...
if [ $? -eq 0 ]
then
ed /etc/default/login <<END
,s!CONSOLE=/dev/console!#CONSOLE=/dev/console!
w
END
fi
Gruß,
Andrew.
P.S. Meta-Frage: Wo fängt den eigentlich "reines" Shellscript an?
Über die Jahrzehnte hat die Shell zwar einiges an Ballast aufgenommen (vgl. Bash) aber viele nützliche Sachen stecken weiterhin in externen Kommandos (z.B. grep). Früher war sogar test ausserhalb der Shell - schon mal /usr/bin/[ -> /usr/bin/test gesehen? Bei Solaris gibt's das aber scheinbar nicht (mehr).