문자열에서 쉘 함수를 호출하는 방법은 무엇입니까? (딸꾹질)

문자열에서 쉘 함수를 호출하는 방법은 무엇입니까? (딸꾹질)

문자열에서 쉘 함수를 호출하고 싶습니다. 내 사용 사례는 다음과 같습니다.

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

관련 정보