[Bash shell script] 도와주세요. 함수의 리턴값을 변수에 저장하는 코드.. 에러가 납니다. (코드첨부)

jaeung24k의 이미지

 #!/bin/bash
 
check_passwd() {
 
    if [ -f "/etc/passwd" ]; then
        echo "Password file exists.."
        return 0
    else
        echo "No such file.."
        return 1
    fi  
}
 
check_passwd
foo='check_passwd' #모르겠다. 함수의 리턴값을 받고 싶은데 변수가 앞에 있으면 함수 호출 자체가 불가능함.
if [ "$foo" -eq 0 ]; then
    echo "File exists."
    exit 0
else
    echo "No such file."
    exit 1
fi

위 코드 실행시 아래와 같은 에러가 납니다.

./test.sh
Password file exists..
./test.sh: 줄 16: [: check_passwd: integer expression expected
No such file.

아예 함수가 호출이 되지 않는 문제입니다.
어떻게 하면 함수의 리턴값을 변수에 담을 수 있나요....?

ktd2004의 이미지

다음과 같이 하면 안될까요?

# console 출력이라면
foo=`check_passwd`
 
# 진짜 return 값이라면
foo=$?
jaeung24k의 이미지

`Function_Name` 의 경우 쉘이 함수를 인식하지 못하는 군요..

다만 조언해주신 foo=$? 를 사용하여 해결하였습니다..

감사합니다!

오늘도 생명과 호흡을 주심에 감사합니다.

Sdsf3qUr의 이미지

'$?' 이 전역 변수가 마지막에 실행한 명령이나 함수의 종료 코드를 담고 있습니다.

jaeung24k의 이미지

$? 는 프로그램 종료시 종료값을 담고 있는 변수인줄만 알았습니다..

마지막 실행한 명령과 함수의 종료값을 실시간으로 담는 변수였군요!

감사합니다, 좋은 하루 보내세요 ^^

오늘도 생명과 호흡을 주심에 감사합니다.