ubuntuusers.de

Shell Script Problem

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

Dakuan

Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6506

Wohnort: Hamburg

Seit einer Woche versuche ich mich jetzt in der Shell Script Programmierung und habe jetzt eine Problem, mit dem ich alleine mit meinen Zeitschriften und Büchern nicht mehr weiterkomme.
Ich verwende die Programme dialog bzw. gdialog für die Menüs.

Mein Problem: Wie bekomme ich die ersten 10 Zeilen einer temporären Datei in eine Variable?

Ich möchte diesen Inhalt in einer "dialog --yesno" Box anzeigen. Da geht leider kein Filename. Read ist auch nicht ideal, da hierdurch die führenden Leerzeichen verloren gehen. Die sind aber nicht unwichtig.

Mein bisheriger Hack sieht etwa so aus:

#!/bin/bash
Dialog="`which dialog`"
...
  Text=""
  k=0
  { while [ $k -lt 10 ]; do read Ta; Text="${Text}${Ta}\n";k=$[$k+1]; done; } <~/temp.txt
  eval "$Dialog --title \" washing file: \" --yesno \"\n${Text}\" 16 70"
  ...
...


Dakuan

bitbieger

Avatar von bitbieger

Anmeldungsdatum:
24. Januar 2005

Beiträge: 85

Wohnort: NRW

KISS - Keep It Simple & Stupid...

gdialog --title Test --yesno "$(head -n 10 /deine/datei)"

hth,
jens

blackbird Team-Icon

Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Wohnort: Hermagor, Kärnten - Österreich

bitbieger hat geschrieben:

KISS - Keep It Simple & Stupid...

gdialog --title Test --yesno "$(head -n 10 /deine/datei)"

hth,
jens

Sowas wollte ich auch gerade posten:

zenity --info --text=`head -n 10 datei.txt`


Tut es aber nicht. Anscheinend will der nur eine Zeile...

MaV

Anmeldungsdatum:
12. Dezember 2004

Beiträge: 68

blackbird hat geschrieben:

gdialog --title Test --yesno "$(head -n 10 /deine/datei)"

Sowas wollte ich auch gerade posten:

zenity --info --text=`head -n 10 datei.txt`


Tut es aber nicht. Anscheinend will der nur eine Zeile...

Wenn du die Option --text wie in bitbiegers Beispiel klammerst, ein Dollarzeichen davor setzt und das Ganze in doppelte Anführungszeichen packst, läuft es auch mit zenity.
Also so:

zenity --info --text="$(head -n 10 /deine/datei)"

Der Parameter -n 10 ist für genau 10 Zeilen nicht unbedingt notwendig, denn 10 ist default, aber anschaulicher.

Gruß,
MaV

blackbird Team-Icon

Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Wohnort: Hermagor, Kärnten - Österreich

Danke.
Man lernt nie aus 😀

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6506

Wohnort: Hamburg

KISS - Keep It Simple & Stupid...

Das gefällt mir und die Lösung auch (fast). Daran erkennt man die Experten.
Also,

gdialog --title Test --yesno "$(head -n 10 /deine/datei)"

habe ich mal eben ausprobiert, und es geht soweit, Allerdings fehlen jetzt die Zeilenwechsel.
Na jedenfalls habe ich jetzt wieder genug Anregungen für weitere Experimente. Wenn das ganze mal funktioniert, wird es vielleicht mal ein Fall für die Projekt Vorstellungen. Ich will überflüssigen Ballast aus .jpg Dateien entfernen.

Dank an alle
Dakuan

Dakuan

(Themenstarter)
Avatar von Dakuan

Anmeldungsdatum:
2. November 2004

Beiträge: 6506

Wohnort: Hamburg

Entwarnung! Hatte noch einen Tippfehler drinn. Jetzt geht es perfekt!
Ich bin immer wieder überrascht wie simpel es doch manchmal ist.
Übrigens, zenity kannte ich bisher noch nicht. Sollte ich mir wohl auch mal ansehen.
Dakuan

blackbird Team-Icon

Avatar von blackbird

Anmeldungsdatum:
19. November 2004

Beiträge: 3397

Wohnort: Hermagor, Kärnten - Österreich

Dakuan hat geschrieben:

Entwarnung! Hatte noch einen Tippfehler drinn. Jetzt geht es perfekt!
Ich bin immer wieder überrascht wie simpel es doch manchmal ist.
Übrigens, zenity kannte ich bisher noch nicht. Sollte ich mir wohl auch mal ansehen.
Dakuan

Zenity ist sehr umfangreich. Das Gute ist, dass es einen Wrapper für gdialog mitbringt 😀

MaV

Anmeldungsdatum:
12. Dezember 2004

Beiträge: 68

blackbird hat geschrieben:

Danke.
Man lernt nie aus 😀

Danke retour! zenity hab ich nicht gekannt. ☺

MaV

Antworten |