How to invoke shell function in string? (bash)












1















I want to invoke shell function in string. Here is my use case:



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


Here I want envfoo to execute envbar shell function.
How can I do it?



Say that is opposite of command which ignores shell function and finds real command.





Maybe I gave a wrong example. I want to combine multiple shell functions like actual executables.
A real case goes like this:



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


Here be isn't expanded into bundle exec. How can I expand them?










share|improve this question




















  • 1





    Why don't use (envbar && envfoo) | grep ENV_ ?

    – cuonglm
    Sep 22 '14 at 3:52













  • Maybe I gave a wrong example.

    – knagano
    Sep 22 '14 at 9:39
















1















I want to invoke shell function in string. Here is my use case:



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


Here I want envfoo to execute envbar shell function.
How can I do it?



Say that is opposite of command which ignores shell function and finds real command.





Maybe I gave a wrong example. I want to combine multiple shell functions like actual executables.
A real case goes like this:



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


Here be isn't expanded into bundle exec. How can I expand them?










share|improve this question




















  • 1





    Why don't use (envbar && envfoo) | grep ENV_ ?

    – cuonglm
    Sep 22 '14 at 3:52













  • Maybe I gave a wrong example.

    – knagano
    Sep 22 '14 at 9:39














1












1








1








I want to invoke shell function in string. Here is my use case:



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


Here I want envfoo to execute envbar shell function.
How can I do it?



Say that is opposite of command which ignores shell function and finds real command.





Maybe I gave a wrong example. I want to combine multiple shell functions like actual executables.
A real case goes like this:



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


Here be isn't expanded into bundle exec. How can I expand them?










share|improve this question
















I want to invoke shell function in string. Here is my use case:



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


Here I want envfoo to execute envbar shell function.
How can I do it?



Say that is opposite of command which ignores shell function and finds real command.





Maybe I gave a wrong example. I want to combine multiple shell functions like actual executables.
A real case goes like this:



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


Here be isn't expanded into bundle exec. How can I expand them?







bash shell






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Sep 22 '14 at 9:42







knagano

















asked Sep 22 '14 at 3:04









knaganoknagano

63




63








  • 1





    Why don't use (envbar && envfoo) | grep ENV_ ?

    – cuonglm
    Sep 22 '14 at 3:52













  • Maybe I gave a wrong example.

    – knagano
    Sep 22 '14 at 9:39














  • 1





    Why don't use (envbar && envfoo) | grep ENV_ ?

    – cuonglm
    Sep 22 '14 at 3:52













  • Maybe I gave a wrong example.

    – knagano
    Sep 22 '14 at 9:39








1




1





Why don't use (envbar && envfoo) | grep ENV_ ?

– cuonglm
Sep 22 '14 at 3:52







Why don't use (envbar && envfoo) | grep ENV_ ?

– cuonglm
Sep 22 '14 at 3:52















Maybe I gave a wrong example.

– knagano
Sep 22 '14 at 9:39





Maybe I gave a wrong example.

– knagano
Sep 22 '14 at 9:39










1 Answer
1






active

oldest

votes


















0














I don't know why you have the env command there, but it works fine if you remove it:



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

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





share|improve this answer























    Your Answer








    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "106"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f156744%2fhow-to-invoke-shell-function-in-string-bash%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    I don't know why you have the env command there, but it works fine if you remove it:



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

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





    share|improve this answer




























      0














      I don't know why you have the env command there, but it works fine if you remove it:



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

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





      share|improve this answer


























        0












        0








        0







        I don't know why you have the env command there, but it works fine if you remove it:



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

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





        share|improve this answer













        I don't know why you have the env command there, but it works fine if you remove it:



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

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






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Sep 22 '14 at 12:07









        l0b0l0b0

        27.9k17118246




        27.9k17118246






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Unix & Linux Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f156744%2fhow-to-invoke-shell-function-in-string-bash%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            How to reconfigure Docker Trusted Registry 2.x.x to use CEPH FS mount instead of NFS and other traditional...

            is 'sed' thread safe

            How to make a Squid Proxy server?