浮点数学与 bc 实用工具详解
1. 命令行参数处理与额外测试
在处理命令行参数时,我们不希望负数被视为无效输入,因此需要在命令行进行额外测试。以之前示例中定义的各个开关为例,-s和-S开关都需要一个开关参数,而-r和-g开关没有参数,因为在定义列表中它们后面没有冒号。当遇到需要开关参数的开关时,该开关参数会被赋值给名为OPTARG的变量。例如,-s或-S的开关参数是精确浮点运算的精度值,我们在while循环内的case语句中进行如下赋值:SCALE=$OPTARG。不过,与float_add.ksh脚本一样,这里的精度设置可能不会得到预期的结果,后续脚本中会有不同表现。
使用getopts解析命令行参数时,getopts并不关心命令行上的具体内容,需要我们自己验证所使用的数据是否符合特定目的,这就是为什么要对用户在命令行输入的数据进行多次测试的原因。
2. 为 bc 构建数学语句字符串
在脚本末尾,我们要为bc命令构建数学语句。在构建此处文档中使用的数学语句时,会在for循环中使用SUBTRACT和MIN