首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向powershell中的Set-Alias传递参数的正确方式是什么?

向powershell中的Set-Alias传递参数的正确方式是什么?
EN

Stack Overflow用户
提问于 2010-04-21 02:08:52
回答 1查看 7.5K关注 0票数 5

下面是一些背景知识:

我在工作中使用windows xp上的PowerShell,并且在My DocumentsMicrosoft.PowerShell_profile.ps1中设置了一些有用的快捷方式,试图模仿受Ryan Bates's shortcuts启发的Mac环境。

我有像这样的东西:

代码语言:javascript
复制
Set-Alias rsc Rails-Console
function Rails-Console {Invoke-Expression "ruby script/console"}

当我在命令提示符下说:

代码语言:javascript
复制
rsc #it calls the proper command

但是,这不能正常工作

代码语言:javascript
复制
Set-Alias rsg Rails-Generate
function Rails-Generate {Invoke-Expression "ruby script/generate"}

所以当我这样做的时候:

代码语言:javascript
复制
rsg model User

它应该调用

代码语言:javascript
复制
ruby script/generate model User

它所调用的就是

代码语言:javascript
复制
ruby script/generate  #Dumping  my params

那么,我如何正确地修改我的函数,以获取我发送给函数的参数呢?

谢谢你!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-21 02:35:01

您的函数不接受任何参数,因此没有参数被传递也就不足为奇了。

你应该这样写它:

代码语言:javascript
复制
function Rails-Generate { ruby script/generate $args }

注意,Invoke-Expression在这里是不必要的。PowerShell是一个外壳--它可以直接调用其他程序。

演示:

代码语言:javascript
复制
PS Home:\> Set-Alias foo Call-Foo
PS Home:\> function Call-Foo { args }
PS Home:\> foo bar baz
argv[0] = Somewhere\args.exe

PS Home:\> function Call-Foo { args $args }
PS Home:\> foo bar baz
argv[0] = Somewhere\args.exe
argv[1] = bar
argv[2] = baz
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2677528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档