|
|
|
|
|
by chubot
3295 days ago
|
|
Right, a real shell obviously can't use strtok. If you're leaving out pipes, redirects, and any control flow, then separating a shell string into words for the argv[] array is fairly similar to lexing a C-escaped string (e.g. in C, Java, Python, JavaScript). You have backslashes, single quotes, and double quotes basically. Traditionally this is done with switch statement in a loop in C. But that is not a good approach for a real shell. Even inside double quotes you can have a fully recursive program, like: $ echo "hi ${v1:-A${v2:-X${v3}Y}B}"
hi AXYB
Once you have recursion then you need some kind of parser, not just a lexer. |
|