Umaash schrieb:
Ich kann das jetzt nicht im Terminal machen, weil ja die Variable den Output aus einem Drittprogramm enthält.
Und wie Du das im Terminal machen kannst! Du brauchst ja nur eine andere Variable zu nehmen. Selbst, wenn Du $1 benutzen willst, kannst Du das so machen:
| $ echo "$1"
$ set -- "neuer wert"
$ echo "$1"
neuer wert
|
Umaash schrieb:
Trotzdem ist mir unklar, weshalb es mit ...
"${1//$'\n'/' '}"
... und als Input:
Aa
Bb
Cc
Dd
Jetzt einen Output von ...
Aa Bb Cc Dd
... gibt.
Ich hätte folgenden Output erwartet:
Aa Bb
Cc
Dd
Warum? Du hast eine Variable, die mehrere Newlines enthält, die Du allesamt durch Leerzeichen ersetzt. Also wird auch die Ausgabe keine Newlines enthalten. Beachte auch das Quoting bei der Ausgabe:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | $ cat x
Aa
Bb
Cc
Dd
$ v=$(cat x)
$ echo "$v"
Aa
Bb
Cc
Dd
$ w="${v//$'\n'/' '}"
$ echo "$w"
Aa Bb Cc Dd
$ echo $w
Aa Bb Cc Dd
$ echo $v
Aa Bb Cc Dd
|
Übrigens musst Du das Leerzeichen in der Ersetzung nicht quoten.