ubuntuusers.de

Variablenzuweisung

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

pinguino

Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

Hallo,

ich möchte den Wert einer Variable speichern, so daß der Wert beim "Enter" drücken automatisch zugewiesen wird, bis ich einen neuen Wert eingebe. Das mache ich in der Regel nach folgendem Beispiel:

1
    ${var:=Wert}

Mit dem folgenden Skript funktioniert das nicht:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#!/bin/bash

    while true

    do

    read -p " Nummer eingeben" var1

    echo ${var:=$var1}

    done

Bei der Eingabe eines neuen Wertes(var1) wird der Wert von var nicht angenommen. Wie könnte ich das Problem lösen ? Danke

gekmihesg

Anmeldungsdatum:
6. Mai 2009

Beiträge: 106

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
vorgabe=123
read -p " Nummer eingeben" eingabe
echo "${eingabe:-$vorgabe}"

# mit funktion:
prompt() {
    local tmp
    read -p "$1 [$2] " tmp
    echo "${tmp:-$2}"
}
eingabe=$(prompt "Nummer eingeben:" 123)

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wohnort: Wolfen (S-A)

Hi pinguino,

Du hast nur einen kleinen logischen Fehler in Deinem Skript:

echo ${var:=$var1}

bedeutet doch, dass bei einer leeren $var (!) die neu eingelesene $var1 übernommen wird.
Das geht natürlich nur beim 1. Mal, denn danach ist $var ja nicht mehr leer.

Was Du willst, ist ja eigentlich das Gegenteil: die andere Variable, $var1 abzufragen, denn die ist ja ggf. leer.
Also z.B. so:

echo ${var1:=$var}
var=$var1

Dabei brauchst Du natürlich die Rück-Zuweisung an $var - alternativ auch in 1 Schritt:

var=${var1:=$var}
echo $var

LG,

track

pinguino

(Themenstarter)
Avatar von pinguino

Anmeldungsdatum:
6. Februar 2007

Beiträge: 732

Wohnort: BW

Das wäre die komplette Lösung :

1
2
3
4
5
6
7
#!/bin/bash
while true
do
read -p "Nummer eingeben: " var
var1=${var:-$var1}
echo ${var:=$var1}
done
Antworten |