zoukankan      html  css  js  c++  java
  • 【错误记录】PowerShell 超级无语的语法错误(令人怀疑人生)

    曾经做过测试,本文是本章优秀测试人员的精神,必须定位到原因,不然吃不下饭。其实可以很容易绕过这种问题。

    环境:

      PowerShell 5.1.16299.64

      Windows 10

    现有代码如下:

    # 备份代码
    Function backup_code()
    {
    
        # 异常处理块, 覆盖命令的 ErrorAction, 所以如果 $ErrorActionPreference 为 Continue, 单行命令的 ErrorAction 为 Stop 并不会阻止脚本执行
        Trap {
    
            Write-Host "Backup code occurred error: $($_.Exception.Message)"
            Set-Location $CurrentPath -ErrorAction "SilentlyContinue"
            return $False
        }
        return 2
    }

    运行脚本一直报一个错误:

    说是 Function backup_code 中最后的一个" } "有问题, 意外标记,这是语法错误,但是我查了好久,每条语句执行都没有问题。

    最终,我发现删除函数里面的第一行注释,就可以。但是我觉得肯定不是简单的说 Trap 必须函数首行或者注释不能在首行,我不行。所以,我尝试过很多方法:

    • 删除注释: 错误消失
    • 将注释分解为几行:错误仍在
    • 将注释后面一部分删除:错误消失
    • 将注释移到Trap中:错误消失

     这简直不可理喻有没有??????????

    为了更精确的定位那个问题,我将注释后面的一部分 "单行命令的 ErrorAction 为 Stop 并不会阻止脚本执行" 从后往前各种组合删除和打乱顺序,以及进行逐个字删除。

    最后发现:

      当把"并"字删除后,错误消失!!!!!!!!

    总结:

      此情况仅在函数中定义 Trap 异常处理块,且在 Trap 块上有""字注释, 才会出现这种问题,俩个条件缺一不可。如果是Try-Catch-Finally等不会出现。

    Update:

          不是因为并的原因, 而是因为中文字符导致换行符被破坏了,所以,造成了这种问题

    至此,我想说:我对此表示无语,"并" 保留对微软追究精神损失费的权利。

  • 相关阅读:
    Dom对象,控制html元素
    运算符总结
    数组
    变量命名规则
    css实现气泡说明框
    深入理解CSS中的层叠上下文和层叠顺序
    jquery书写
    二级导航
    iis配置
    Android ListView无法触发ItemClick事件
  • 原文地址:https://www.cnblogs.com/pengyusong/p/7880194.html
Copyright © 2011-2022 走看看