这是 dacsexpr 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器
程序:
您的姓名
dacexpr - DACS 表达式语言外壳和解释器
概要
dacexpr [-x[选项[1]][先生[-e 表达式[-n[-p[-s[-h | -救命[-测试]
[--[文件名[脚本参数...]
商品描述
该程序是 DACS 套房。
这个 dacexpr 效用评估 DACS 表达式(见 dacs.表达式(5)[2])。 它往往是一个
在编写或测试要在访问控制规则中使用的表达式时的有用帮助,或
在调试 ACL 和配置指令时。 虽然他们继续被称为
“表达式”由于历史原因,编写小程序成为可能,并且
该语言还可以用作独立于其余部分的简单脚本语言
DACS.
如果提供了表达式,则对其进行评估并将结果打印到标准
输出。 最多可以指定一个表达式。 如果 -q 给出标志(其中之一
选项[1]),什么都不打印,表达式计算错误被抑制,并且
程序以适当的方式终止 出口 状态[3]; 否则结果被写入
标准输出。 如果既不 -q 没有给出标志,也没有给出任何控制日志记录的标志
级别,然后将日志记录级别设置为警告覆盖任何配置文件日志记录
级别指令; 这种行为通常很方便。
如果未提供表达式,则程序读取其标准输入。 如果输入不是
来自终端类型的设备,程序以“批处理模式”运行并提示为
压制; 否则,程序以“交互模式”运行。 当提示输入时
交互模式,进入 帮助 寻求帮助。 如果 的ReadLine(3)[4] 功能是
在程序构建时配置,命令行编辑和历史记录可用
交互模式。
如果程序是通过系统的“#!”执行的机制,一个或多个命令行
可以给出参数:
#!/usr/local/dacs/bin/dacsexpr -test
// 期望精确:17
${x} = 17;
此类程序总是使用脚本文件作为输入,因此没有表达式或其他文件
可以在“#!”上指定线。
这个 环保 命名空间是从程序的环境中初始化的。 例如,如果值
环境变量的 日志名称 是bobo,那么 ${环境::日志名称} 将被实例化
有了那个价值。 语法上无效的变量名称会被默默忽略。
备注
配置指令和 CONF 变量命名空间仅在以下情况下可用
配置文件被处理(例如,通过给出 -uj 命令行标志)。 这是
相关的,例如,如果 http()[5] 函数使用 https 方案调用
因为正确的操作需要 SSL_PROG[6] 要配置的指令。 看
配置文件(5)[7]。
配置
如果尚未指定表达式或文件,则文件名可能会显示为最后一个
争论。 如果 文件名 为“-”,则读取标准输入。
先生
将调试信息打印到 stderr。
-e 表达式
计算给定的表达式。
-h
-救命
显示帮助消息并退出。
-n
不计算任何表达式,只检查语法错误。
-p
将最终结果打印到标准输出,除非它已被抑制 -q or
-n. 如果没有这个标志,程序就必须输出结果。
-s
如果正在从命令行或文件评估单个表达式,并且
评估结果是一个字符串或 bstring,输出将被引号包围
除非指定了这个标志。
-测试
输入是一个测试用例。 测试用例由选项后跟一个表达式组成。
可以有零个或多个选项,每行一个,嵌入在 // 样式注释中:
{ 空格* "//" 空格* 选项名称 “” 期权价值 行结束 }*
“:”前后不允许有空格。 作为一种特殊情况,具有
以下格式被忽略:
空格* "///" .* 行尾
第一个非选项行终止选项,是选项的第一行
要评估的表达式。
这是一个例子:
/// 测试按位移位
// 期望精确:1024
1<<10
一个选项控制如何执行测试并给出预期结果:
期望:正则表达式
期望正则表达式:正则表达式
结果字符串必须匹配 正则表达式. 这两个选项名称是等效的。
期望相同:绳子
结果字符串必须匹配 绳子 究竟。
期望精确:绳子
结果字符串必须匹配 绳子 完全一样,除了那个 C 风格的字符
常量(前面有反斜杠) 绳子 被插值。
期望代码:码
结果代码必须匹配 码, 如果结果是 0 真, 1 如果结果
is 假, 2 如果发生错误。 如果未给出此选项,则默认代码为
假设为 0。
期望类型:类型
结果的类型必须匹配 类型, 可以是整数, 实数, 字符串,
bstring、文字或 undef。
期望标志:标志
目前,唯一公认的值 标志 是 rw_namespaces 和
ro_命名空间。 前者允许测试创建或修改变量
DACS, 参数或 环保 命名空间; 默认情况下,这些命名空间是只读的。 这个
测试时可能有用 从()[8],例如,因为它允许测试
设置一个值 ${DACS::REMOTE_ADDR}. 默认行为可以明确
通过指定 ro_namespaces 选择。
显示结果:{是 | 不}
仅在选项值为YES时才将结果打印到标准输出。
如果测试失败,则会向标准错误打印一条描述性消息。 这
如果测试成功,程序的退出状态将为 0,否则为 1。
这个例子应该会成功而不显示结果:
// 期望精确:2
// 期望类型:整数
/// 显示结果:是
1 + 1
备注
这个 DACS 发行版在 src/tests 目录中包含一组测试用例,
可以运行进行回归测试(从 src 目录执行“进行测试”)。 一些
由提供的功能 dacs.表达式(5)[2] 也被内部使用 DACS,所以
即使对于未使用的功能,所有测试都必须成功,这一点至关重要
从用户层面。
-x
如果这是第一个标志,则表明 dacexpr 正在作为
通过系统的“#!”脚本机制。 如果程序的
确定这一点的启发式方法是不正确的。 最后一个参数必须是文件名。
--
此参数明确标记最后一个标志参数。 文件名参数可能
跟随。
示例
以下命令计算表达式参数(注意它是单个参数
到命令)并将结果输出到标准输出:
% dacsexpr -e "1+1"
2
% dacsexpr -e '${Env::USER}'
“波波”
% dacsexpr -u example.com -e '"FEDERATION_NAME="。 ${Conf::FEDERATION_NAME}'
“FEDERATION_NAME=EXAMPLE”
% dacsexpr - abc <
? print("第一个参数是\"\${Argv::1}\"")
? 这里
第一个参数是“a”
% 猫前
#!/usr/local/dacs/bin/dacsexpr
print("Argv[2] 是 ${Argv::2}");
% chmod 0755 前
% ./ex foo bar baz
Argv[2] 是条形
诊断
如果发生错误,消息可能会写入 stderr,具体取决于日志记录级别。 在
一般情况下,当且仅当一切正常时,程序才会退出 0。 如果一个命令行
表达式被求值,如果表达式求值为,程序退出 0 真, 1 如果
评估为 假, 2 如果发生错误。 如果显式调用 出口() 是制造的,没有
true 错误条件发生,然后程序将退出参数值。
使用 onworks.net 服务在线使用 dacsexpr