开发者社区> 问答> 正文

混淆命令并在同一行代码中使用它

我想知道您是否可以为命令添加别名,并在同一行代码中使用它,请参见以下示例:

alias php=/opt/plesk/php/5.6/bin/php; php -v;

我希望它输出PHP 5.6。

alias php=/opt/plesk/php/7.3/bin/php; php -v;

我希望它输出PHP 7.3。但是,我得到的是:

php -v
# outputs 5.6

alias php=/opt/plesk/php/5.6/bin/php; php -v;
# outputs 5.6

alias php=/opt/plesk/php/7.3/bin/php; php -v;
# outputs 5.6

php -v
# outputs 7.3

我尝试过该&&运算符,但结果相同。

我想在gitlab持续集成脚本中使用此脚本,该脚本通过ssh -t传递字符串来执行脚本。但是我正在调用几个php函数,并且我不想每次都粘贴完整的php路径:

展开
收起
祖安文状元 2020-01-06 15:27:00 557 0
1 条回答
写回答
取消 提交回答
  • 我认为在执行任何操作之前,正在解析命令行并应用别名。但是,您可以使用shell函数来实现。我没有PHP,但是我有几个Perl版本可以测试:

    $ perl -v |grep version                      #  V
    This is perl 5, version 26, subversion 2 (v5.26.2) built for x86_64-cygwin-threads-multi
    
    $ perl(){ /usr/bin/perl "$@" ; } ; perl -v |grep version
    This is perl 5, version 26, subversion 3 (v5.26.3) built for x86_64-cygwin-threads-multi
    
    
                                             #  ^
    

    因此定义传递功能

    perl(){ /usr/bin/perl "$@" ; }
    
    

    更改perl以后在命令行中对该单词的解释方式。请注意,您确实需要;之前的内容}-请参阅此答案。

    对于您的用例,我建议使用其他名称以避免混淆。例如:

    currphp(){ /opt/plesk/php/5.6/bin/php "$@" ; } ; currphp -v
    currphp(){ /opt/plesk/php/7.3/bin/php "$@" ; } ; currphp -v
    
    2020-01-06 15:27:15
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《0代码搭应用》 立即下载
不止代码 立即下载
《15分钟打造你自己的小程序》 立即下载