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
'IT이야기' 카테고리의 다른 글
DbContext 스레드는 안전할까? (0) | 2021.04.08 |
---|---|
URL을 일반 Windows 파일 이름 Java로 변환 (0) | 2021.04.08 |
플래시를 사용하지 않고 선택한 텍스트를 클립 보드에 복사 (0) | 2021.04.06 |
Java에서 예외를 발생시키지 않고 try / catch 블록에서 중단하는 방법 (0) | 2021.04.06 |
C 함수의 시작 부분에서 (무효) '변수 이름'의 용도 (0) | 2021.04.06 |