#236: GetComponents should abort on undefined variables ----------------------------+----------------------------------------------- Reporter: knarf | Owner: eric9 Type: defect | Status: accepted Priority: minor | Milestone: Component: GetComponents | Version: Resolution: | Keywords: ----------------------------+-----------------------------------------------
Comment (by eric9):
Ok, I see what's going on here. Since $ARR is not defined, !GetComponents treats it as a legitimate directory name and attempts to check the thorns into Cactus/$ARR/xxx. Then the shell obviously decides that $ARR is not defined and gets rid of it, so I end up with Cactus/xxx. This presents an interesting problem because, technically, '$ARR' is a valid directory name, although I doubt that anyone actually names their folders like that.
So I see two possible solutions:
1. Force the $ sigil to indicate a variable and throw an error if it was not previously defined. This would be very clean and prevent issues of the type you saw; however, if someone happens to prefix some folders with a $, they would be out of luck...
2. Allow the $ sigil to be used NOT referring to a variable. Any paths of this type would have to be explicitly single-quoted; this could probably be handled by !GetComponents itself though. I think I could just add some logic to automatically enclose any paths in single-quotes before executing a command, which should change nothing outside of odd cases like this.
Since this would mean altering the behavior of !GetComponents, we should probably ask for comments on the mailing list as well.
What do you think?