别烦我啦 2022-11-18 20:42 采纳率: 71.4%
浏览 15
已结题

shell编程算术表达式expr非整数参数的错误

问题遇到的现象和发生背景

shell编程算成绩等级的程序,写算术表达式时,出现了 “expr 非整数参数” 的错误

用代码块功能插入代码,请勿粘贴截图
!/bin/bash
#filename yan2
points=0
echo "请输入你的成绩"
read points
level=0
level=`expr $points / 10`
case $level in
9) echo "你的成绩等级:A" ;;
10) echo "你的成绩等级:A";;
8) echo "你的成绩等级:B";;
7) echo "你的成绩等级:C";;
6) echo "你的成绩等级:D";;
*) echo "你的成绩等级:E";;
esac
运行结果及报错内容

img

我的解答思路和尝试过的方法
!/bin/bash
#filename yan2
points=0
echo "请输入你的成绩"
read points
level=0
num=10
level=`expr $points / $num`
case $level in
9) echo "你的成绩等级:A" ;;
10) echo "你的成绩等级:A";;
8) echo "你的成绩等级:B";;
7) echo "你的成绩等级:C";;
6) echo "你的成绩等级:D";;
*) echo "你的成绩等级:E";;
esac

当我将expr表达式中的10改成变量的形式就对了

img

我想要达到的结果

难道是常量和变量不能同时出现在同一个表达式中吗,想知道为什么会这样

  • 写回答

2条回答 默认 最新

  • curating 2022-11-18 21:29
    关注

    我在linux下使用bash情况下是正常的。
    确认你的用户是bash。
    另外,sh脚本的第一行应该是 #!/usr/bin/bash (具体看你的环境)

    [root@curating tcode]# vim t.sh
    !/bin/bash
    #filename yan2
    points=0
    echo "请输入你的成绩"
    read points
    level=0
    level=`expr $points / 10`
    case $level in
            9) echo "你的成绩等级:A" ;;
            10) echo "你的成绩等级:A";;
            8) echo "你的成绩等级:B";;
            7) echo "你的成绩等级:C";;
            6) echo "你的成绩等级:D";;
            *) echo "你的成绩等级:E";;
    esac
    "t.sh" [New] 16L, 349C written                                                                                                                   
    [root@curating tcode]# sh t.sh
    t.sh: line 1: !/bin/bash: No such file or directory
    请输入你的成绩
    98
    你的成绩等级:A
    [root@curating tco
    
    
    [root@curating tcode]# which bash
    /usr/bin/bash
    [root@curating tcode]# cat t.sh
    #!/usr/bin/bash
    #filename yan2
    points=0
    echo "请输入你的成绩"
    read points
    level=0
    level=`expr $points / 10`
    case $level in
            9) echo "你的成绩等级:A" ;;
            10) echo "你的成绩等级:A";;
            8) echo "你的成绩等级:B";;
            7) echo "你的成绩等级:C";;
            6) echo "你的成绩等级:D";;
            *) echo "你的成绩等级:E";;
    esac
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突