IT이야기

bash 함수 반환 값을 테스트하는 적절한 방법

cyworld 2021. 4. 8. 00:18
반응형

bash 함수 반환 값을 테스트하는 적절한 방법은 무엇입니까?


다음과 같은 if 문에서 bash 함수 반환 값을 테스트하고 싶습니다.

if [[ func arg ]] ; then …

하지만 다음과 같은 오류 메시지가 나타납니다. 조건부 이항 연산자가 예상됩니다.

이를 수행하는 올바른 방법은 무엇입니까?

그것은 :

 if [[ $(func arg) ]] ; then ...

종료 코드이고 결과가 아니라면 사용할 수 있습니다.

if func arg; then ...

함수가 적절한 종료 코드 (사용 return N)를 반환하도록 할 수없고 문자열 결과를 사용해야하는 경우 @Alex Gitelman 답변을 사용합니다.

$ help if:

if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi

조건에 따라 명령을 실행합니다.

if COMMANDS목록이 실행됩니다. 종료 상태가 0이면 then COMMANDS목록이 실행됩니다. 그렇지 않으면 각 elif COMMANDS목록이 차례로 실행되고 종료 상태가 0이면 해당 then COMMANDS목록이 실행되고 if 명령이 완료됩니다. 그렇지 않으면`else COMMANDS '목록이 있으면 실행됩니다. 전체 구성의 종료 상태는 마지막으로 실행 된 명령의 종료 상태이거나 조건이 참으로 테스트되지 않은 경우 0입니다.

종료 상태 : 마지막으로 실행 된 명령의 상태를 반환합니다.


이 오류는 함수가 둘 이상의 단어를 반환하는 경우 생성되는 것 같습니다.

예 : 1 2.

그냥 인용하세요 :

"$(func arg)"

견본:

$ if [[ 1 2 ]] ; then echo 1 ; fi
-bash: conditional binary operator expected
-bash: syntax error near `2'
$ if [[ "1 2" ]] ; then echo 1 ; fi
1

그리고 0과 0이 아닌 것을 비교하면

if [[ "$(func arg)" != "0" ]]

이것은 나에게 유용했기 때문에 다음 세부 정보를 추가합니다.

두 가지 조건을 테스트해야하는 경우 하나는 기능 / 명령의 종료 상태이고 다른 하나는 변수 값입니다.

if func arg && [[ $foo -eq 1 ]]; then echo TRUE; else echo FALSE; fi

참조 URL : https://stackoverflow.com/questions/6241256/what-is-proper-way-to-test-a-bash-function-return-value

반응형