Variable mit const?

P

ploki

Jungspund
Hallo,

ich möchte in meinem Script am Anfang eine Variable setzen und diese soll später im Script nicht überschrieben werden können, z.B.:

Code:
Var=2
...(später)
Var=3
echo $Var --> 2

Gibt es sowas wie const?

Grüße, ploki
 
Hi,

du suchst
Code:
declare -r VAR=1
Das -r steht fuer read-only, und declare ist ein bash-builtin.

mfg,
bytepool
 
Zuletzt bearbeitet:
Hi,

das:
Code:
declare -r VAR=1
hat damals wunderbar funktioniert, doch komischwerweise geht es jetzt nicht mehr. Kann das evtl an einem Debian Update von 3 auf 5 liegen oder hat es vermutlich nie richtig funktioniert?

Ich führe folgende Zeilen aus:
Code:
declare -r VAR=1
declare -r HAR=1
source eine.cfg

In "eine.cfg" steht folgendes drinnen:
Code:
...
VAR=0
echo "das war VAR"
HAR=0
echo "das war HAR"
XAR=0
...

und die shell liefert folgenden Fehler:
./eine.cfg: line 4: VAR: readonly variable
das war VAR
./eine.cfg: line 6: HAR: readonly variable

was ja auch verständlich ist, da die Variable "VAR" und "HAR" ja schon angelegt wurden und nicht mehr überschrieben werden können.
Aber das Problem ist, dass er nur "das war VAR" ausgibt, aber ab "HAR" gibt er nichts mehr aus, d.h., dass "source" anscheinend beim 2.mal abbricht?!

Kann man das irgendwie lösen? Oder kann es sein, dass es davor (vor dem Debianupdate) überhaupt funktioniert hat?
 
Hi,

ich kann das Problem nicht nachvollziehen.

Folgendes funktioniert unter Debian Squeeze mit GNU bash, version 4.0.28:

Code:
$ cat foo.sh
#!/bin/bash

declare -r Var=1
declare -r Har=2

source bar.txt
Code:
$ cat bar.txt

echo vor Var
Var=10
echo nach Var

echo vor Har
Har=20
echo nach Har

echo vor Foo
Foo=10
echo nach Foo
Code:
$ ./foo.sh
vor Var
bar.txt: line 3: Var: readonly variable
nach Var
vor Har
bar.txt: line 7: Har: readonly variable
nach Har
vor Foo
nach Foo

mfg,
bytepool
 
Hi,
ich versteh es selber nicht. Ich habe mal den gleichen Code von dir eingegeben und meine Console gibt aber nur folgendes aus:

Code:
vor Var
./bar.txt: line 2: Var: readonly variable

Dann ist Ende... woran kann das liegen??

edit: ich habe folgende Version: GNU bash, version 3.2.39(1)-release
Kann es daran liegen?
 
Hi,

jup, unter Lenny mit GNU bash, version 3.2.39 bekomm ich das selbe Ergebnis, wird also an einer Veraenderung des declare bash-builtins liegen. Ich wuerde mal die Changelogs danach durchsuchen, und versuchen dahinter zu kommen was veraendert wurde.
Ich hab selbst leider keine Zeit der Sache auf den Grund zu gehen.

mfg,
bytepool
 

Ähnliche Themen

systemd service mit Bash Script und Subshell in einer tmux Umgebung

chown Befehl in einem Script

Returncode ($?) bei find immer "0" ?

Hilfe für ein shell script

Kernel Kaltstart / reboot?

Zurück
Oben