programing

쉘에서 .bashrc에 정의 된 함수를 어떻게 호출합니까?

yoursource 2021. 1. 17. 12:23
반응형

쉘에서 .bashrc에 정의 된 함수를 어떻게 호출합니까?


내 .bashrc에는 hello라는 함수가 있습니다.

function hello() {
   echo "Hello, $1!"
}

다음과 같이 쉘에서 hello ()를 호출 할 수 있기를 원합니다.

$ hello Lloyd

그리고 출력을 얻으십시오.

> Hello, Lloyd!

트릭은 무엇입니까?

(물론 제가 염두에두고있는 실제 기능은 더 복잡합니다.)

편집 : 이것은 함수의 구문 오류로 인해 실제로 발생한다고 생각합니다! :(

function coolness() {

    if[ [-z "$1"] -o [-z "$2"] ]; then
        echo "Usage: $0 [sub_package] [endpoint]";
        exit 1;
    fi
        echo "Hi!"
}

함수의 테스트가 작동하지 않습니다. -z 절을 괄호로 묶어서는 안되며 if와 여는 괄호 사이에 공백이 있어야합니다. 읽어야합니다.

function coolness() {

    if [ -z "$1" -o -z "$2" ]; then
        echo "Usage: $0 [sub_package] [endpoint]";
        exit 1;
    fi
    echo "Hi!"
}

함수를 내보낼 수 있습니다. 당신에 ~/.bashrc당신이 함수를 정의 한 후 파일 추가 export -f functionname.

function hello() {
   echo "Hello, $1!"
}

export -f hello

그러면이 함수는 쉘 프롬프트와 거기에서 호출하는 다른 스크립트에서도 사용할 수 있습니다.

하위 프로세스에서 사용되지 않는 한 함수를 내보낼 필요가 없습니다 (이전 문장에서 "또한"). 일반적으로 그런 경우에도 source사용할 파일에 함수를 추가하는 것이 좋습니다 .

편집 :

Bash 조건 문의 대괄호는 대괄호가 아니라 명령입니다. 주위에 공간이 있어야합니다. 조건을 그룹화하려면 괄호를 사용하십시오. 기능은 다음과 같습니다.

function coolness() {

    if [ -z "$1" -o -z "$2" ]; then
        echo "Usage: $0 [sub_package] [endpoint]";
        exit 1;
    fi
        echo "Hi!"
}

조건문을 작성하는 더 좋은 방법은 다음과 같습니다.

    if [[ -z "$1" || -z "$2" ]]; then

이중 대괄호가 단일 대괄호보다 더 많은 기능을 제공하기 때문입니다.


스크립트에 라인 포함

source .bashrc

작동해야하는 소스 구조로 시도하십시오 !


Any changes made to .bashrc will only take effect in a new terminal session. If you want to apply the changes to your current terminal session, you have to instruct the shell to re-read the .bashrc. The shortest way to to this is to use the . command, which is a synonym to source:

[user@linuxPc]$ . ~/.bashrc

$ source .bashrc

It's weird; my fuctin won't terminate untill I pass it to another bash instance, like this:

bash myfunction

ReferenceURL : https://stackoverflow.com/questions/1500499/how-do-you-call-a-function-defined-in-bashrc-from-the-shell

반응형