On Mon, Mar 22, 2021 at 03:12:25AM +0100, Alex fxmbsw7 Ratchev wrote: > i realize its somewhat of a big limitation, to have only global and > one level further ( local ) args, no per function
One or more of your assumptions are wrong. Bash uses "dynamic scope" when it expands variables. This means that it looks first in the current functions local variables; if the variable isn't found there, it looks in the caller's local variables, and then in the caller's caller's local variables, and so on, until it reaches the global scope. f() { local var=set_in_f g } g() { echo "var is $var" } var=global f # Prints "var is set_in_f" Now, the big question is WHY you thought something which is not correct. The most common reasons that people think something which is wrong are: 1) They heard or read it somewhere, and did not verify it themselves. 2) They encountered a problem with their own program, and while attempting to track down the problem, they took a wrong turn, and did not fully diagnose the situation. They drew a wrong conclusion from partial data. In your case, I suspect it's #2. This project that you've been working on is so incredibly arcane, convoluted and bizarre that *nobody* understands it, including you. Who knows how many other fallacious assumptions are baked into it, since you are apparently incapable of simplifying anything down to the most basic level for debugging, or even explaining what your *goal* is.