命令行参数:#
参数通过 argv 列表访问
- 脚本参数
1lumesh script.lm Alice tom
2# in script.lm
3print argv # 输出 "[Alice, tom]"
4print argv[0] # 输出 "Alice"- 命令行传参
1lume -c 'print argv' -- a b # 或
2lume -c 'print argv' a b
3# 输出
4[a, b]环境变量#
系统环境变量#
Sys.env()列出系统环境变量
1set var value # 设置系统环境变量
2unset var # 删除系统环境变量典型系统变量:
1PATH #系统环境变量
2HOME #系统环境变量当前环境变量#
Sys.vars()列出当前环境变量
1let var value # 设置当前环境变量
2del var # 删除当前环境变量Lumesh定义的当前环境变量:
1env #列出所有当前环境变量
2IS_LOGIN #是否LOGIN-SHELL
3IS_INTERACTIVE #是否交互模式
4IS_STRICT #是否严格模式IFS#
这是一个特殊的环境变量,用于内部字段分割。
- IFS功能控制的三种状态行为表格
| 掩码 | 语法类型 | 掩码功能位未启用 | 启用但IFS值未设置 | 启用且IFS值已设置 |
|---|---|---|---|---|
| 2 | 命令字符串参数 | 将整个字符串作为单个参数传递 | 使用换行符作为默认分隔符 | 使用IFS值作为分隔符分割 |
| 4 | for循环/循环派发管道分割 | 依次尝试按行、空格、分号、逗号分割 | 依次尝试按行、空格、分号、逗号分割 | 使用IFS值分割字符串 |
| 8 | String.split函数 | 使用空白符分割(split_whitespace) | 使用空格(" ")作为默认分隔符 | 使用IFS值作为分隔符 |
| 16 | From.csv/Into.csv函数 | 使用逗号(",")作为CSV分隔符 | 使用逗号(",")作为默认分隔符 | 使用IFS值的首字符作为CSV分隔符* |
| 32 | Ui.pick函数 | 使用换行符("\n")分割选项 | 使用换行符("\n")作为默认分隔符 | 使用IFS值分割选项列表 |
*注:CSV函数有特殊处理,如果IFS设置为"\n",仍使用逗号作为分隔符。
- 控制逻辑流程
- 第一层检查:通过 检查
LUME_IFS_MODE位掩码是否启用对应功能 - 第二层检查:如果功能已启用,检查
IFS变量是否设置为有效字符串值 - 第三层执行:根据检查结果执行相应的分割逻辑
这种三层控制设计提供了最大的灵活性和向后兼容性。系统初始化时会确保IFS变量存在。
配置说明
LUME_IFS_MODE: 位掩码,控制哪些语法使用IFS
IFS: 实际的分隔符字符串
默认值: LUME_IFS_MODE默认为2,只影响命令参数分割
使用示例
要启用所有IFS功能,可以设置:
1let LUME_IFS_MODE = 62 # 2+4+8+16+32 = 62,启用所有功能要只启用特定功能的组合,可以将对应的位值相加。例如:
- 只启用命令参数和字符串分割:
LUME_IFS_MODE = 10(2+8) - 启用for循环和CSV解析:
LUME_IFS_MODE = 20(4+16)
IFS(Internal Field Separator)是一个shell概念,在Lumesh中被实现为可配置的字符串分割机制。通过位掩码系统,用户可以精确控制哪些语法上下文使用IFS分割,哪些使用默认行为。这种设计提供了向后兼容性,同时允许用户根据需要自定义字符串处理行为。