Modifying a read-only variable

October 2017






Solution 1


A variable declared as read-only can not be modified during outgoing process.
But if the variable is exported in a child shell it may be modified.

#!/bin/bash

if [ "$PROC_PID" != "$PPID" ]; then
  export PROC_PID=$$
  var="mype"
  echo "initial $var"

  declare -r var

  export var
  $0 & # child process 
else
  echo "before $var"
  var="netty5"
  echo "after $var"
fi

Solution 2


Making use of indirect development.


# Declaration of read-only Variable
$ readonly Z="Y"
$ echo $Z
Y

# Suppression test 
$ unset Z
-l: unset: Z: cannot unset: readonly variable

# Replacement test
$ Z=W
-l: Z: readonly variable

# Declaration of an indirect variable
$ Y=W
$ echo "$Y"
W

# Development of variable with indirection
$ echo "${!Z}"
W

$
Published by netty5. Latest update on August 13, 2009 at 07:05 AM by jak58.
This document, titled "Modifying a read-only variable," is available under the Creative Commons license. Any copy, reuse, or modification of the content should be sufficiently credited to CCM (ccm.net).