Zum Inhalt springen

make oldconfig: immer 'default' nehmen


bigredeyes

Empfohlene Beiträge

hallo!

ich habe mir zum spass ein kleines script geschrieben, welches mein ubuntu nen neuen kernel verpasst.

jetzt sollte das ganze natürlich so automatisch wie nur irgend möglich funzen.

soll heißen: ich will nicht in der mitte vom ablauf ca. 500 x enter drücken um einfach "immer default" ausgewählt zu haben.

jetzt brauche ich bisschen eure ideen:

wie löse ich das am besten via #!/bin/sh?

DANKE

bigredeyes

Link zu diesem Kommentar
Auf anderen Seiten teilen

so funzt es:

./script.sh <<< \ \
kann mir einer erklären warum??? bigredeyes p.s. script.sh sieht so aus:
#!/bin/sh

VAR=DUMMY

read VAR

echo $VAR > orschlurch.txt

read VAR

echo $VAR >> orschlurch.txt

read VAR

echo $VAR >> orschlurch.txt

read VAR

echo $VAR >> orschlurch.txt

echo vorbei >> orschlurch.txt

hab es mit 'make oldconfig' noch nicht probiert. sollte es wider erwarten nicht klappen, dann schrei ich nochmal ganz laut.

Link zu diesem Kommentar
Auf anderen Seiten teilen

so funzt es:

./script.sh <<< \ \
kann mir einer erklären warum???
Na ja, das bash-Manual sagt dazu folgendes:

   Here Strings

       A variant of here documents, the format is:


              <<<word


       The word is expanded and supplied to the command on its standard input.

Das word ist dabei in Deinem Fall, hmm, ein maskiertesn Leerzeichen? Weißraum kann so tricky sein... Wenn Du das Leerzeichen zwischen den beiden Backslashes wegläßt, mußt Du übrigens am Ende der Zeile nur einmal die Enter-Taste drücken. Was hier letztlich passiert, ist einfach, daß Du Dein Skript einen Zeilenwechsel von der Standardeingabe einlesen läßt. Das Problem dabei (und deswegen hatte ich Dir das Programm yes empfohlen), daß dieser Zeilenwechsel nur einmal eingelesen wird. Bei den folgenden Aufrufen von read in Deinem Skript, greift folgende Eigenart dieses shell builtin:

If there are fewer words read from the input stream than names, the remaining names are assigned empty values.

Das kannst Du auch überprüfen, indem Du statt des Zeilenwechsels mal ein a übergibst, also ./script.sh <<< a aufrufst. Das a steht dann nur in einer Zeile Deiner Ausgabedatei. Es hängt nun von dem Skript ab, das Du letztendlich benutzen willst, ob es damit klarkommt. Wenn dort auch immer read benutzt wird und leere Werte als Bestätigung OK sind, kein Problem. Falls das Skript allerdings auf irgendeine ausgefeiltere Art explizit ASCII-Zeichen 13 einzulesen versucht und einen leeren String nicht akzeptiert, funktioniert es halt nicht mehr.

Link zu diesem Kommentar
Auf anderen Seiten teilen

so, danke!

ich habe nun mal eine echtes "script-kiddie" befragt.

dieser sagte mir auch dass ' blub.sh <<<\ \' doch sehr seltsam sei...

das mit <<<a habe ich auch mal probiert. stimmt, wird nur einmal 'a' eingetragen. der rest ist 'leer'. eigentlich wie gewünscht. nur warum....

wie würde man denn mit 'yes' ein CR schreiben?

bigredeyes

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie würde man denn mit 'yes' ein CR schreiben?

Jetzt bitte nicht lachen, aber: indem Du dem yes einen leeren String als Argument mitgibst, also

yes '' | blub.sh
Der Antwortstring von yes (per Default 'y') wird mit einem CR abgeschlossen. Die Tatsache, daß Du in der Ergebnisdatei Deines Skriptes auch mehrere Zeilen hattest, liegt an Deiner Benutzung von echo im Skript. Du hast das CR nicht von der Eingabe eingelesen sondern nur mit dem Skript ausgegeben. Das kannst Du sehen, indem Du einfach mal alle read-Anweisungen bis auf die erste rauslöschst. Dann hast Du eine Datei, die genauso viele zeilen hat wie die mit den read-Anweisungen erzeugte. Dann steht bei
blub.sh <<<a

sogar das 'a' in den ersten vier Zeilen (weil Du es nach dem ersten read nicht mehr veränderst), bringt Dir aber nix, weil das Skript das 'a' viermal von der Eingabe einlesen soll...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...