一点背景:
我在工作时在 windows xp 上使用 PowerShell,并在 Microsoft.PowerShell_profile.ps1
中设置了一堆有用的快捷方式在 My Documents
, 尝试模拟 Mac 环境
灵感来自 Ryan Bates's shortcuts
我有这样的事情:
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
那么我将如何正确修改我的函数以获取我发送给函数的参数?
谢谢!!
最佳答案
您的函数不接受任何参数,因此没有任何参数被传递也就不足为奇了。
你应该这样写:
function Rails-Generate { ruby script/generate $args }
请注意
Invoke-Expression
在这里是不必要的。 PowerShell 是一个 shell——它直接调用其他程序没有问题。演示:
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
关于powershell - 在powershell中将参数传递给Set-Alias的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2677528/