Mehrzeilige Variable in Einzeilige umwandeln

Bash, Shell, PHP, Python, Perl, CGI
basher
Posts: 2
Joined: 2018-03-16 18:18

Mehrzeilige Variable in Einzeilige umwandeln

Post by basher » 2018-03-16 18:23

Hallo,

ich habe eine Variable nach dem Muster

Code: Select all

wert1
wert2
wert3
Daraus soll eine Variable nach dem Muster

Code: Select all

wert1 wert2 wert3
gemacht werden. Wenn ich das versuche kommt überhaupt kein Output ($x enthät den mehrzeiligen Inhalt)

Code: Select all

y=$x | tr "\n" " "
echo §y
Fraglich wäre hier ohnehin, ob ich die Leerzeichen bekomme.

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Mehrzeilige Variable in Einzeilige umwandeln

Post by Joe User » 2018-03-17 02:13

Befehle und Pipes als Values müssen in Backticks gepackt werden, damit sie in einer Subshell ausgeführt und die Ausgabe in der Variablen gespeichert werden kann.

`tr` benöttigt als input einen Stream, was in diesem Fall bedeutet, dass Du "$x" mittels echo zum Stream machen musst. Zudem mag `tr` einfache Hochkommata lieber als doppelte Hochkommata.

In Shellscripts sollten Values möglichst immer gequotet werden, das vermeidet oft Fehler.

Als Ergebnis sollte dann soetwas rauskommen:

Code: Select all

y="`echo "$x" | tr '\n' ' '`"
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

basher
Posts: 2
Joined: 2018-03-16 18:18

Re: Mehrzeilige Variable in Einzeilige umwandeln

Post by basher » 2018-03-17 08:48

Gibt leider das gleiche aus wie vorher, wieder mit Zeilenumbruch.

Kann es sein, dass am Ende vielleicht gar kein richtiger Zeilenumbruch steht sondern noch mehr? Gibt es eine Möglichkeit sich das (symbolisch) anzeigen zu lassen?

User avatar
Joe User
Project Manager
Project Manager
Posts: 11583
Joined: 2003-02-27 01:00
Location: Hamburg

Re: Mehrzeilige Variable in Einzeilige umwandeln

Post by Joe User » 2018-03-17 11:44

Wie beziehungsweise durch was wird denn die Variablenliste erzeugt?
Üblich sind "\r" (Apple/MAC), "\n" (UNIX) und "\r\n" (Windows/UNIX) als Zeilenenden.
Möglicherweise kommst Du mit `sed` statt `tr` schneller zum Ziel oder Du konvertierst die Zeilenenden zuerst mit `dos2unix`.
Wenn "$x" ein File ist, dann musst Du `echo` durch `cat` ersetzen.

Am Besten postest Du mal das ganze Script, dann lässt sich besser helfen.
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.