如何将整个命令行文本作为bash函数的参数?

时间:2011-08-24 00:51:00

标签: bash

我希望能够做到这一点

be rake db:migrate

而不是

be "rake db:migrate"

如何编写此功能?

function be() {   
  bundle exec ??? 
}

4 个答案:

答案 0 :(得分:4)

"$@"正是您要找的。

来自bash手册的$ @说明:

  

从一个开始扩展到位置参数。当。。。的时候   扩展发生在双引号内,每个参数扩展为a   单词。也就是说,“$ @”相当于“$ 1”“$ 2”....

答案 1 :(得分:4)

我使用alias

执行此操作
// .bash_profile
alias be="bundle exec"

我甚至会考虑制作它

alias be="bundle exec rake"

因为除了rake任务之外我从来没有真正需要它,我总是忘记写rake。如果是特殊情况,那么我不介意完整地输入bundle exec

正如@holygeek所指​​出的,alias是适合这项工作的正确工具。

答案 2 :(得分:0)

用反引号括起表达式将执行封闭函数的输出。

`rake db:migrate`

答案 3 :(得分:0)

您不想使用此功能。别名就是你想要的(这是正确的工具):

alias be='bundle exec'