• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Variable verketten mit Zeilenumbruch

tiny

Newbie
Hi,

ich möchte zwei Variablen verketten, bei meinen bisherigen Versuchen werden die aber immer hintereinander gesetzt statt mit Zeilenumbruch. Angenommen ich habe folgendes

Code:
a=$(wmctrl -l | grep Firefox)
b=$(wmctrl -l | grep Terminal)

und ich erhalte für $a

Code:
0x04800003  0 tiny-pc Linux Forum - Neues Thema erstellen - Mozilla Firefox

und für $b

Code:
0x04600003  0 tiny-pc Terminal - tiny@tiny-pc ~
0x046016e2  0 tiny-pc Terminal - tiny@tiny-pc ~

Ich habe zwei Möglichkeiten gefunden. Die eine ist so:

Code:
c="${a} ${b}"
echo "$c"

Hier wird die 1. Zeile von $b direkt nach der einzigen Zeile von $a geschrieben. Ich kann hier einfache und doppelte Anführungszeichen setzen wie ich will, nie werden die 3 Zeilen in getrennten Zeilen ausgegeben. z. b. "'${a}' '${b}'" oder ""${a}" "${b}"" oder '"${a}" "${b}"'.

Die zweite Möglichkeit ist mit "+=":

Code:
a=$(wmctrl -l | grep Firefox)
a+=$(wmctrl -l | grep Terminal)
echo "$a"

Hier werden alle 3 Zeilen direkt nacheinander geschrieben. Auch der quoten der ersten beiden Zeilen (a="$(wmctrl -l | grep Firefox)") bringt nichts.
 

abgdf

Guru
Verstehe nicht genau, was Du meinst. Zeilenumbruch wäre "\n".

Dies hier (aus Deinen Beispielen) ist bei mir in drei Zeilen:
Code:
#!/bin/bash
a="0x04800003  0 tiny-pc Linux Forum - Neues Thema erstellen - Mozilla Firefox"
b="0x04600003  0 tiny-pc Terminal - tiny@tiny-pc ~
0x046016e2  0 tiny-pc Terminal - tiny@tiny-pc ~"
c="${a} ${b}"
echo "$c"
Kann aber auch davon abhängen, wie die Umgebungsvariable für den Zeilenumbruch gesetzt ist. Das hatte neulich schonmal Gräfin Klara bemerkt, daß das viele Probleme dieser Art löst.
Hab' aber vergessen, wie das ging (ich nutze bash (immer noch) ungern).
 
Oben