boolean linux shell_给PowerShell脚本传递一个布尔值
谁写脚本的经验再丰富,可能也会有败走麦城的时候。比如写出这样一个test.ps1
param
(
[bool]$Confirm,
[bool]$Force
)
if($Confirm){
'Confirmed'
}
if($Force){
'Forced'
}
调用时遇到点小插曲:
PS> .\test.ps1
PS> .\test.ps1 -Confirm $true -Force
C:\Documents\test.ps1 : 缺少参数“Force”的某个参数。请指定一个类型为“System.Boolean”的参数,然后再试一次
。
所在位置 行:1 字符: 27
+ .\test.ps1 -Confirm $true -Force
+ ~~~~~~
+ CategoryInfo : InvalidArgument: (:) [test.ps1],ParameterBindingException
+ FullyQualifiedErrorId : MissingArgument,test.ps1
PS> .\test.ps1 -Confirm $true -Force $true
Confirmed
Forced
最终达到了期望的结果。我们再换一种调用方式:
PS> powershell.exe .\test.ps1 -Confirm $true -Force $true
C:\test.ps1 : 无法处理对参数“Confirm”的参数转换。无法将值“System.String”转换为类型“System.Boo
lean”。布尔参数仅接受布尔值和数字,例如 $True、$False、1 或 0。
所在位置 行:1 字符: 21
+ .\test.ps1 -Confirm True -Force True
+ ~~~~
+ CategoryInfo : InvalidData: (:) [test.ps1],ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,test.ps1
上面这样调用的目的,在于脱离PowerShell控制台的上下文,直接在外部应用程序中调用PowerShell.exe,比如你写了一个winform程序,在winform程序中调用PowerShell,千万不要告诉我C#本身可以执行Powershell脚本,因为那样需要引用PowerShell的程序集,而2.0,3.0,4.0的这几个版本很难用一个dll搞定。
上面这样调用错误的原因,$true最终被解释成true字符串,这个字符串默认不能自动转换成布尔类型。其实错误信息给出了提示可以使用1,0:
PS> powershell.exe .\test.ps1 -Confirm 1 -Force 1
Confirmed
Forced
上面这个例子能调用成功,是因为我的上下文还在PowerShell 中,“1”默认被转换成了整数“1”,而整数可以被布尔类型强制类型转换。接下来我要完全脱离PowerShell上下文,在cmd中运行:
c:\> powershell.exe .\test.ps1 -Confirm 1 -Force 1
Confirmed
Forced
结论:跨进程给PowerShell脚本传递布尔类型是,如果遇到解析错误,可以使用0和1代替。
其实更高级更方便的应当是使用switch:
param
(
[switch]$Confirm,
[switch]$Force
)
×用微信扫描并分享
暂时没有相关文章。
boolean linux shell_给PowerShell脚本传递一个布尔值相关推荐
- linux向脚本传递参数,Linux 使用位置变量向脚本传递参数
参考:<Linux命令 / 编辑器与脚本编程> ################################################# 脚本文件在执行时,也可以像命令和应用程序 ...
- Linux系统通过Shell脚本实现一个全方面的系统性能分析系统
Linux系统通过Shell脚本实现一个全方面的系统性能分析系统 文章目录 Linux系统通过Shell脚本实现一个全方面的系统性能分析系统 1.利用select循环实现系统工具箱 2.命令技巧 3. ...
- java后台传一个对象到前台_前台判断对象中的一个布尔值_springMVC面试题
1:springMVC工作原理 springMVC架构.png [用户发送请求到前端控制器dispatcherservlet,前端控制器接收到请求之后调用处理器映射器,根据请求url找到具体的处理器, ...
- 给定一个只由 0、1、、|和^五种字符组成的字符串express,再给定一个布尔值 desired。返回express能有多少种组合方式,可以达到desired的结果。
问题描述: 给定一个只由 0(假).1(真).&(逻辑与).|(逻辑或)和^(异或)五种字符组成的字符串express,再给定一个布尔值 desired.返回express能有多少种组合方式, ...
- java后台传一个对象到前台_前台判断对象中的一个布尔值_前后台分离的项目中,如何优雅的传输boolean类型的参数...
前言:需求 这是一个Spring + Angular前后台分离的项目,目前有一个查看作业列表的功能,并且已经设置了分页和几个查询参数,如图. 现在需要增加一个已评阅和未评阅的查询功能. Work实体的 ...
- java返回一个布尔值_关于java:返回布尔值的方法
好的,所以我的问题是关于布尔值的回报. 对于我的Comp Sci作业,我必须使用方法制作课程注册程序,其中之一是添加课程方法. 基本上,您在目录中搜索该班级,如果匹配,则将其添加到学生时间表中,并返回 ...
- linux shell java 参数_java调用linux中的shell脚本传递参数并返回执行结果
[刚接触 linux下的开发,最近遇到java调用shell脚本的问题,找到一个比较适合菜鸟级的方法,转述如下: 在需要运行的SHELL脚本第一行添加 #!/bin/sh然后在终端运行 chmod ...
- java远程调用linux的命令或者脚本
为什么80%的码农都做不了架构师?>>> 转载请出自出处: http://eksliang.iteye.com/blog/2105862 Java通过SSH2协议执行远程She ...
- Linux 中启用 Shell 脚本的调试模式
shell 脚本调试系列 Linux 中启用 Shell 脚本的调试模式 在 Shell 脚本中执行语法检查调试模式 在 Shell 脚本中跟踪调试命令的执行 概述 脚本是存储在一个文件的一系列命令. ...
最新文章
- 对示波器测量正弦波幅值和相位仿真实验
- php隐藏webshell_【web端权限维持】利用ADS隐藏webshell
- java中Logger.getLogger(Test.class)
- Boost:bimap双图信息的测试程序
- python套用word模板_如何使用Python批量创建Word模板
- 华为Mate 30系列后摄相机模组曝光:圆形三摄各有不同
- 早晨有好多学生在买早餐吃,这样好吗?家长不给孩子做饭吗?
- python怎么下载教程-Python爬虫文件下载图文教程
- hadoop安装单机配置
- php split to array,Split php varibale with JS into array
- HDU 1754 I Hate It 线段树RMQ
- 传输层协议(3):TCP 连接(中)
- Java 猜单词游戏
- python核心编程第二版第六章答案
- Spring 事务和事务传播机制
- 分类与聚类的区别以及聚类的方法分类
- 劲爆!群晖docker视频
- 用Python爬取文章,并转PDF格式电子书
- 网络渗透测试实验二(网络扫描与网络侦察)
- 英语一大作文模板如何自己制作?