文字列からシェル関数を呼び出したい。私のユースケースは次のとおりです。
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