早起不洗头 2024-03-26 19:14 采纳率: 0%
浏览 2

shell脚本中,注释的问题

原本可以正常运行的shell脚本,在使用<<! ! 的方式注释掉之后,会报:行15: * : 语法错误: 期待操作数 (错误符号是 "* ") 的错误

原先的shell脚本是这样的


```bash
read -p "请输入大于20的数:" num

if [ $num -gt 20 ]
then
    echo $(( $num * $num ))
else
    echo "太小了"
fi



现在我对原先的脚本进行注释,编写了新的脚本,结果运行的时候会出现报错

if who|grep "^$1"
then
    echo "欢迎你 $1"
else
    echo "你走开 $1"
fi



<<!
read -p "请输入大于20的数:" num

if [ $num -gt 20 ]
then
    echo $(( $num * $num ))
else
    echo "太小了"
fi
!



运行结果变成这样

[root@localhost scripts]# ./wjh.sh wewew
20240326日 星期二 19:13:28 CST
你走开 wewew
./wjh.sh:行15: *  : 语法错误: 期待操作数 (错误符号是 "*  ")
[root@localhost scripts]# 



有没有大佬知道什么问题,网上搜不到,呜呜呜呜呜
  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 Java领域优质创作者 2024-03-26 19:15
    关注

    早起不洗头 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    根据你提供的信息,问题发生在使用<<! ! 的方式注释掉一段代码后运行新的脚本时出错。这是因为在shell脚本中,使用<<! ! 注释掉代码时,其中的部分被解释器认为是一个命令,而不是注释。因此,在解释器尝试执行这些注释代码时,由于代码本身是无意义的,所以会出现语法错误。

    为了解决这个问题,你可以尝试以下解决方案:

    1.使用#来添加注释:在shell脚本中,使用#符号来注释掉代码是最常用的方式。可以将<<! ! 的方式注释掉的代码替换为#进行注释。修改后的脚本如下:

    read -p "请输入大于20的数:" num
    
    if [ $num -gt 20 ]
    then
        echo $(( $num * $num ))
    else
        echo "太小了"
    fi
    
    # 注释部分,可以使用#来注释掉
    #read -p "请输入大于20的数:" num
    
    #if [ $num -gt 20 ]
    #then
    #    echo $(( $num * $num ))
    #else
    #    echo "太小了"
    #fi
    

    2.使用多行注释符号:在shell脚本中,使用:<</* /的方式可以实现多行注释,并且不会被解释器执行。你可以将注释部分的代码用:<</ */注释掉。修改后的脚本如下:

    read -p "请输入大于20的数:" num
    
    if [ $num -gt 20 ]
    then
        echo $(( $num * $num ))
    else
        echo "太小了"
    fi
    
    :<</* */
    read -p "请输入大于20的数:" num
    
    if [ $num -gt 20 ]
    then
        echo $(( $num * $num ))
    else
        echo "太小了"
    fi
    /* */
    

    请注意,无论使用#注释还是:<</* /注释,都要确保注释符号(#或:<</ */)单独占据一行,并且紧随其后的注释内容也单独占据一行。这样才能正确注释掉一段代码。

    希望以上解决方案对你有帮助!如有问题请随时追问。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月26日

悬赏问题

  • ¥15 怎么改成输入一个要删除的数后现实剩余的数再输入一个删除的数再现实剩余的数用yes表示继续no结束程序
  • ¥15 在启动roslaunch时出现如下问题
  • ¥15 汇编语言实现加减法计算器的功能
  • ¥20 关于多单片机模块化的一些问题
  • ¥30 seata使用出现报错,其他服务找不到seata
  • ¥35 引用csv数据文件(4列1800行),通过高斯-赛德尔法拟合曲线,在选取(每五十点取1点)数据,求该数据点的曲率中心。
  • ¥20 程序只发送0X01,串口助手显示不正确,配置看了没有问题115200-8-1-no,如何解决?
  • ¥15 Google speech command 数据集获取
  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?