【问题标题】:How to create an alias command that changes environment variable before executing an actual command如何在执行实际命令之前创建一个更改环境变量的别名命令
【发布时间】:2010-11-19 07:52:42
【问题描述】:

首先,很抱歉,这是一个“给我密码”的问题。不过,我保证会从您的回答中学习!这意味着如果您觉得有必要,请随时使用Socratic method


我目前正在使用 Grails 开发(维护和构建新站点)多个站点,它的工作方式是它提供了一个用于执行各种任务的命令行 shell。

这一切都很好,但是在版本之间切换有点麻烦,因为它全部由一个名为 GRAILS_HOME 的环境变量控制,该变量设置为指向诸如 C:\grails\grails-1.2.3\ 之类的目录。

现在,我希望能够做到这一点,而不是做这样的事情:

grails create-app MyWebApp
grails list-plugins -repository=myPluginRepo
grails install-plugin myPlugin

然后注意到我使用了错误的版本并且我必须返回,我宁愿这样做

g135 create-app MyWebApp
g135 list-plugins -repository=myPluginRepo
g135 install-plugin myPlugin

这会立即告诉我我正在使用 Grails 1.3.5。

我在创建这样的 psh 脚本时遇到的问题是,我在创建脚本方面绝对烂透了。我确实尝试过这样做,但在 psh 本身发出大约五条神秘错误消息后,我决定征求意见。

加分:如果我可以参数化别名调用以指定版本(类似g[1.3.5] other params),然后将数字附加到环境变量值, 这对我来说是最方便的解决方案。

【问题讨论】:

    标签: scripting windows-7 powershell


    【解决方案1】:

    应该这样做:

    Function PSGrails($ver)
        {
        $env:GRAILS_HOME='c:\grails\grails-{0}\' -f $ver
        grails $args
        }
    

    这只是一个设置变量然后像上面一样执行grails的简短函数。

    通过直接在函数名后面指定版本号来运行它:

    psgrails 1.3.5 create-app MyWebApp     
    psgrails 1.3.5 list-plugins -repository=myPluginRepo     
    psgrails 1.3.5 install-plugin myPlugin  
    

    【讨论】:

    • 我认为你可能需要 splat @args 而不是将其作为 $args 传递
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 2023-01-15
    • 2018-06-18
    • 1970-01-01
    相关资源
    最近更新 更多