Thread [bash] Wie kann man bei Fallunterschieden die Variablen vertauschen? (2 answers)
Opened by Wild.Card at 2017-07-29 23:37

Linuxer
 2017-07-29 23:50
#187055 #187055
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Hi,

das erledigt man auf die klassische Weise mit einer dritten Variable.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#! /bin/bash


a="foo"
b="bar"

echo "$a $b"

# tausche klassisch
c="$a"
a="$b"
b="$c"

echo "$a $b"

# optionales aufraeumen
unset c


Oder man nutzt read mit einer Subshell; es kann sein, dass dies nur bei neueren Bash-Varianten funktioniert.
Braucht keine extra Variable, aber startet eine Subshell.
Kann Probleme machen, wenn Leerzeichen in den Variablen enthalten sind.

Code: (dl )
1
2
3
4
# "hack" mit read
read b a <<<$( echo "$a $b" )

echo "$a $b"



edit fixed code example
edit2 fixed and extended code example
edit3 "" added to protect whitespaces in strings...
Last edited: 2017-07-30 00:12:23 +0200 (CEST)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread [bash] Wie kann man bei Fallunterschieden die Variablen vertauschen?