1 个不稳定版本
0.0.0 | 2023年3月20日 |
---|
#60 在 #子集
25KB
605 行
Irsh
描述
类似于 Bash 的解释器,也许还可以作为编译器?设计为具有最小依赖项的交互式 shell,可能不支持所有 Bash 语法。
特性
- 支持独特的 Bash 变量/函数声明语法
- 始终假设在 $ 后面有 {,并且括号/括号正确关闭
- 忽略由于未关闭的代码块/引号而导致的边缘情况,并崩溃以实现更简单(和更快?)的方案
- 无默认值的函数/程序参数被视为强制性的
- 仅支持一层子命令
- 子命令只能用于双引号字符串的开头
- 子命令限制为变量/单词和重定向符号
- 不支持嵌套引号
- 不支持(目前?)多行字符串
限制
- 可能在某些边缘情况下失败
- 仅实现 &> 重定向
- 仅支持 ${alphanum},不支持 $@ 或 $* 或任何其他形式
- 非封闭子命令将导致无限循环
- $() 没有双引号时将导致无限循环
目标
- 解析具有作用域和默认值的 Bash 变量
- 通过
function
关键字解析 Bash 函数 - 支持外部命令的调用
- 实现基本 Bash 功能的子集
- 支持 stdout/err 重定向