쉘에서 .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
'programing' 카테고리의 다른 글
Python에서 포인터 시뮬레이션 (0) | 2021.01.17 |
---|---|
wkhtmltopdf를 호출하여 HTML에서 PDF 생성 (0) | 2021.01.17 |
해시 인수를 사용한 DRY Ruby 초기화 (0) | 2021.01.17 |
맞춤 주문 설명 (0) | 2021.01.17 |
Django-AttributeError 'User'객체에는 'backend'속성이 없습니다 (하지만… (0) | 2021.01.17 |