Bash 함수에서 () 구문의 의도된 목적은 무엇입니까?

Bash 함수에서 () 구문의 의도된 목적은 무엇입니까?

내 기분을 상쾌하게 하는 중이야세게 때리다기술. 나는 이 단어를 사용한다기술나는 오랫동안 게임을 하지 않았기 때문에 검토의 일환으로 다음 코드를 사용하여 무언가를 작성하기로 결정했습니다.배쉬/제니티/야드. 나는 매뉴얼 페이지를 읽고, 유익한 커뮤니티를 탐색하고, 많은 YouTube 비디오를 보았습니다. 그런 다음 내 아트 스튜디오를 위한 상품권을 생성하는 간단한 너겟을 만들었습니다. 예상한 대로 zenity에서 사용자 입력을 받아 클라우드에 있는 텍스트 파일에 데이터를 추가합니다. 간단하고 잘 작동합니다. 하지만 그때 나는 내가 사용할 수 있다는 것을 기억했습니다기능Bash에서는 코드를 더 자유롭게 이동할 수 있습니다. 너무 길었습니다. 함수에 인수를 전달하고 싶었지만 구문을 이해하지 못했다는 것을 깨달았습니다.

내가 시도한 대략적인 예는 다음과 같습니다.

function foo (bar) {
    if [[ ${bar} -eq 1]]; then
        #do_something_here
        #return value_one_here
    else
        #do_something_else_here
        #return value_two_here
    fi 
} 
foo 3
newvar=$?
echo -e "${newvar}\n"

분명히 매개변수를 bash 함수에 전달하는 이 방법은 구문상 올바르지 않습니다. 이제 이 작업을 올바르게 수행하는 방법을 알고 있지만 다음과 같은 질문이 제기됩니다.함수 선언에 ()가 있는 이유는 무엇입니까? 그렇다면 () 안에는 무엇이 들어갈까요? () 안에 매개변수가 포함된 스크립트를 본 적이 없습니다. 그렇다면 왜 함수 구문의 일부입니까? 티아

답변1

표준 함수 정의에 사용되는 구문은 다음과 같습니다.

funcname() {
  cmds;
}

AT&T는 1984년에 Bourne Shell에 이 기능을 추가하기로 결정했습니다.

함수 구문:

function funcname {
  cmds;
}

1983년경부터. 이것은 AT&T에도 있었지만 David Korn의 그룹에서는 수정된 Bourne Shell 생성의 부작용으로 Bourne Shell에 데이터베이스 내장 명령을 추가하는 작업을 하고 있었습니다 ksh.ksh

관련 정보