文字列からシェル関数を呼び出すには? (しゃっくり)

文字列からシェル関数を呼び出すには? (しゃっくり)

文字列からシェル関数を呼び出したい。私のユースケースは次のとおりです。

function envfoo() {
    env ENV_FOO=foo $@
}
function envbar() {
    env ENV_BAR=bar $@
}

$ envfoo env |egrep ENV_
ENV_FOO=foo
$ envbar env |egrep ENV_
ENV_BAR=bar
$ envfoo envbar env |egrep ENV_
env: envbar: No such file or directory
# expected result: ENV_FOO=foo and ENV_BAR=bar lines

envfooここではシェル機能を実行したいと思いますenvbar。どうすればいいですか?

commandシェル機能を無視して実際のコマンドを探すのとは対照的に、これを言います。


たぶん私は間違った例を聞いたかもしれません。実際の実行ファイルのように、いくつかのシェル機能を組み合わせたいと思います。実際のケースはこんな感じです。

function be() {
    bundle exec $@
}

function envstg() {
    env RAILS_ENV=staging $@
}

$ be rails server
# launches Rails server

$ envstg be rails server
env: be: No such file or directory

ここではbeバンドルexecへの拡張はありません。どのように拡張できますか?

ベストアンサー1

なぜこのコマンドがあるのか​​わかりませんが、env削除すると正常に動作します。

$ function be() {
>     echo "$@"
> }

$ function envstg() {
>     RAILS_ENV=staging "$@"
> }
$ be rails server
rails server
$ envstg be rails server
rails server

おすすめ記事