Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

make oldconfig: immer 'default' nehmen

Empfohlene Antworten

Veröffentlicht

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

Schon mal die man page zu yes(1) gelesen?

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.

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.

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

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...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.