博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PowerShell函数调用问题
阅读量:5244 次
发布时间:2019-06-14

本文共 896 字,大约阅读时间需要 2 分钟。

    powershell函数调用问题及原因分析。。。此代码是测试使用,重点是函数调用问题。。。

开始我是这么写的,结果发现无论如何函数返回的都是0,函数如下

文件test.txt的内容如下:

也就是,即使我现在输入haha或者houhou或者heihei,它还是提示“none,you can add it!!”,这是怎么回事,我上网搜了下原来powershell的函数调用不用加括号,直接在函数后面写参数就行了。。于是,我将第18行改成了if(Exists $t,$a  -eq 1),发现结果还是不对,然后查了好多有关powershell调用的资料,资料上说调用时可以指定要传的具体的形参和实参的对应值,我尝试了一下,将它改为:

if(Exists -temp $t, -array $a  -eq 1),哈哈真可以了,好神,,结果如下:

运行结果是:

输入gaga的结果是:

    

 

然后我仔细又分析了下,其实一开始错误是有原因的,因为powershell有时候强大的让人窒息,它能把文件一行一行的读出来自动存储在一个数组中,然后按照索引进行访问,能将一些变量自动归为一组,就像这个例子,调用的时候由于没有指定形参,于是将传入的两个值$t和$a当成一个参数数组传给Exists函数的第一个参数$temp了,这样$array是空值,所以根本不执行foreach,直接返回0了。这里,我深深的感慨一下,powershell中的变量是弱类型的,当然这也是所有脚本语言的共同特点,即没有类型的限制,不用考虑是否有数组溢出、数组类型不匹配等头疼问题。也很方便,任何变量可以不指定类型,直接拿来用了,不然这里怎么会把$temp当成数组呢,即$a这个东西可能是一个整型、一个字符串、一个数组。。。。。。所以这样的话,您就别指望它报错了。

    所以,以防万一,在函数调用时,还是老老实实的指定实参是传给哪个形参吧。进入写函数的时候又没有再出现过这个问题了,很奇怪。

转载于:https://www.cnblogs.com/zhoujie/archive/2013/01/22/Powershell_called.html

你可能感兴趣的文章
FancyCoverFlow
查看>>
教你一分钟实现动态模糊效果
查看>>
C++中explicit的用法
查看>>
java 企业站源码 兼容手机平板PC 响应式 主流SSM框架 freemaker 静态引擎
查看>>
JS博客
查看>>
Docx转Doc操作(c#)
查看>>
一条简单的 SQL 执行超过 1000ms,纳尼?
查看>>
Python函数(一)之杵臼之交
查看>>
如何设置映射网络驱动器的具体步骤和方法
查看>>
ASP.NET WebApi 基于OAuth2.0实现Token签名认证
查看>>
SendMail与Postfix的架构备忘
查看>>
Atitit.跨平台预定义函数 魔术方法 魔术函数 钩子函数 api兼容性草案 v2 q216 java c# php js.docx...
查看>>
283. Move Zeroes把零放在最后面
查看>>
Visual Studio Code 打开.py代码报Linter pylint is not installed解决办法
查看>>
Python 数据类型
查看>>
Task 与 Activity
查看>>
Google Guava学习笔记——简介
查看>>
历时八年,HTML5 标准终于完工了
查看>>
17.树的子结构
查看>>
D - Mike and strings
查看>>