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 |