5

一点背景:

我在工作时在 windows xp 上使用 PowerShell,并在 in 中设置了一堆有用的快捷方式Microsoft.PowerShell_profile.ps1My Documents试图模拟受Ryan Bates 快捷方式启发的 Mac 环境

我有这样的事情:

Set-Alias rsc Rails-Console
function Rails-Console {Invoke-Expression "ruby script/console"}

当我在命令提示符下说:

rsc #it calls the proper command

然而这不能正常工作

Set-Alias rsg Rails-Generate
function Rails-Generate {Invoke-Expression "ruby script/generate"}

所以当我这样做时:

rsg model User

应该调用

ruby script/generate model User

它所称的只是

ruby script/generate  #Dumping  my params

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

谢谢!!

4

1 回答 1

11

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

你应该这样写:

function Rails-Generate { ruby script/generate $args }

注意Invoke-Expression这里是不必要的。PowerShell 是一个外壳——直接调用其他程序没有问题。

演示:

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
于 2010-04-20T18:35:00.567 回答