Let’s say we have a function in bash which simply iterates through all elements from array and prints them on the standard output.
1 2 3 4 5
We can call this function in the following way
If we want to call function with other parameters we need to update arr variable accordingly
1 2 3 4
So far so good. But what if we want to make our
printElems function generic and put it to the separate file. Is
enough to stay with our solution to maintain
arr variable in global scope ? The answer is - it depends on the size
the project. It is obvious that maintaining global variables is cumbersome in projects which are getting bigger and
bigger during their lifetime. So that is there any smart way to improve our function to not pollute the global scope ?
The answer is yes, and in this task will help us bash feature called ‘indirect variable reference’.
Below is an improved version of
printElem function. A new function (
printElems2) is not dealing with global
all. In fact the function receives a variable name and thx to the indirect reference operator
the value of the function parameter is set to local variable called
1 2 3 4 5 6
1 2 3 4 5
More information about ‘indirect variable reference’ feature you can find here