|Subject:||Re: param expansion with single-character special vars in the environment|
|Date:||Wed, 27 Apr 2016 08:41:20 -0400|
On Wed, Apr 27, 2016 at 7:37 AM, Piotr Grzybowski <address@hidden> wrote:
It seems to me that creating the reference should be allowed, but the access to the referenced variable should honor its attributes.
Once you convert the variable to a reference, you can control its value by modifying the value of a different variable with the name that corresponds to the value of the readonly variable, so “access to the referenced variable should honor its attributes” probably won’t do much (If I understand your suggestion correctly).
In a less convoluted example that doesn’t rely on creating our own namerefs:
readonly USER=sandbox USER=root # bash: USER: readonly variable declare -n USER sandbox=root # works USER=root # works [[ $USER == root ]] # 0 # USER is unchanged, other than the -n attribute declare -p USER # declare -nrx USER="sandbox"
The above works when the readonly variable has a value that is also a valid identifier. In my previous example I worked around this using the fact that
ref=<whatever>; declare -n ref does not check to make sure that
$ref is a valid identifier.
readonly PATH=/opt/bin ref=$PATH declare -n ref ref=/usr/bin declare -p /opt/bin # declare -- /opt/bin="/usr/bin" declare -n PATH # declare -nr PATH="/opt/bin" echo $PATH # /usr/bin
|[Prev in Thread]||Current Thread||[Next in Thread]|