문자열에서 쉘 함수를 호출하고 싶습니다. 내 사용 사례는 다음과 같습니다.
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