[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Local variable can not unset within shell functions
From: |
alex xmb sw ratchev |
Subject: |
Re: Local variable can not unset within shell functions |
Date: |
Thu, 11 Jul 2024 16:35:37 +0200 |
On Thu, Jul 11, 2024, 16:34 alex xmb sw ratchev <fxmbsw7@gmail.com> wrote:
>
>
> On Thu, Jul 11, 2024, 15:42 Dr. Werner Fink <werner@suse.de> wrote:
>
>> Hi,
>>
>> I've a report that with later bash the following which works in bash-4.2
>>
>> x () {
>> local x=y
>> declare -p x
>> echo $x
>> unset x
>> declare -p x
>> echo $x
>> }
>>
>> with
>>
>> linux-40cm:~ # x () {
>> > local x=y
>> > declare -p x
>> > echo $x
>> > unset x
>> > declare -p x
>> > echo $x
>> > }
>> linux-40cm:~ # x
>> declare -- x="y"
>> y
>> -bash: declare: x: not found
>>
>> but with bash-5.X the reporter sees (and complains)
>>
>> sl15sp5:~ # x () {
>> > local x=y
>> > declare -p x
>> > echo $x
>> > unset x
>> > declare -p x
>> > echo $x
>> > }
>> sl15sp5:~ # x
>> declare -- x="y"
>> y
>> declare -- x
>>
>
> id aay the v5 is more valid as error got replaced by working code (
> var=foo ; sav=$( declare -p var ) ; .. ; eval "$var" ( or maybe another
> noeval version )
>
sorry , eval "$sav" , not $var
greets
>
> ... for global variables it works as expected.
>>
>> Werner
>>
>> --
>> "Having a smoking section in a restaurant is like having
>> a peeing section in a swimming pool." -- Edward Burr
>>
>