Open joerick opened 7 years ago
This might be a clue...
>>> print bashlex.parsesingle("PATH=\"$PATH:/usr/local/bin/\"").dump()
CommandNode(pos=(0, 28), parts=[
AssignmentNode(pos=(0, 28), word='PATH=$PATH:/usr/local/bin/', parts=[
ParameterNode(pos=(6, 11), value='PATH'),
]),
])
>>> print bashlex.parsesingle("PATH2=\"$PATH:/usr/local/bin/\"").dump()
CommandNode(pos=(0, 29), parts=[
WordNode(pos=(0, 29), word='PATH2=$PATH:/usr/local/bin/', parts=[
ParameterNode(pos=(7, 12), value='PATH'),
]),
])
Without a number, the bit parses as an assignment node, but with a number it parses as a word node 🤔
Huh, that's weird. Usually what I've done in cases like this is step through bash's source code and see how it parses it compared to bashlex. Then fixing it becomes easier.
I'm seeing a strange bug with variable assignments
In the above example, it seems to be the number in the env var name that triggers the removal of quotes.
The following example shows that a preceeding var assignment with a number in the name will trigger the different quote behaviour.
Retaining the quotes is desirable for my use case. I can workaround, so I'm just wondering if this is a bug in bashlex or some strange bash behaviour.