Bash运行圆面积计算脚本报syntax error near unexpected token '|'如何解决
错误原因
- 误用
let命令:let是Bash内置的整数运算命令,仅支持整数计算,不识别管道语法,也无法接收bc返回的浮点数结果,你将带|的语句放在let的赋值范围内,Bash解析时判定为非法语法,直接抛出对应报错。 - 缺少命令替换语法:要将外部命令的输出结果赋值给变量,必须使用
$()(推荐)或反引号包裹对应命令,你当前的写法没有正确使用命令替换,不符合Bash语法规则。
修复方法
将原let开头的那行代码替换为以下内容即可:
areaCirc=$(echo "scale=2;3.1416 * ($radius * $radius)" | bc)
修改后的完整对应代码段如下:
elif [ $num -le 6 ] && [ $num -ge 4 ] then read -p "Enter radius: " radius areaCirc=$(echo "scale=2;3.1416 * ($radius * $radius)" | bc) echo "Area of the circle is: " $areaCirc
补充说明:这里用echo把计算表达式传递给bc做浮点数运算,再通过$()把运算结果取出赋值给变量,完全规避了let不支持浮点数和管道的问题,语法符合Bash规范。
内容的提问来源于stack exchange,提问作者LLMN
相关产品推荐
相关产品推荐

