강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

쉘프로그래밍강좌054: 명령의 실행이 참(0)임을 반환하는 true

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌054: 명령의 실행이 참(0)임을 반환하는 true

 

 

 

 

true는 독립적으로 사용되는 경우는 거의 없습니다.

 

 

 

 단지 쉘프로그램내에서 주로 사용되며 아무것도 하지 않으며 참값(0)을 반환하는 명령어입니다.

 

 

 

, 쉘프로그램내에서 실행한 명령의 결과가 정상적(0)으로 종료되었다는 의미로 true를 실행하여 실행이 정상적으로 완료되었음을 알려주는 역할을 합니다.

 

 

 

  

 

이때 true가 반환하는 종료상태(exit status)값은 실행성공을 의미하는 0입니다.

 

 

 

 

 

그리고 true는 항상 거짓값(1)을 반환하는 false와는 반대를 의미합니다.

 

 

 

 

 

명령어위치 : /bin/true

 

사용형식   :  true [ignored command line arguments]

 

 

 

 

true에 대한 실제 사용 예는 이 책의 쉘프로그램 예에서 보실 수 있습니다.

 

 

 

 

 아래의 예는 /etc/rc.d/init.d/isdn 쉘스크립트내에서 true가 사용된 예들을 나타낸 것입니다.

 

 

 

 

 

아래의 예에서 $?는 가장 최근에 실행했던 명령의 실행결과 종료 값을 나타냅니다.

 

 

 

가장 최근에 실행했던 명령의 종료 값이 0이면 실행이 정상적으로 되었다는 성공을 의미하는 것이며, 1이면 정상적으로 실행되지 못하였다는 것을 의미합니다.

 

 

 

 

 

if [ $? -eq 0 ] ; then

        action  $"Starting $prog" /bin/true

        touch /var/lock/subsys/isdnlog

else

        action  $"Starting $prog" /bin/false

fi

 

 

 

 

따라서 위의 예에서 “$? –eq 0”이라는 것은 이전 실행 명령이 정상적으로 실행되었는가를 체크하여 실행이 정상적으로 되었다면  then 문장을 실행하고 정상적으로 실행되지 못하였다면 else문장을 실행하라는 것입니다.

 

 

 

 

, 실행이 정상적으로 이루어졌다면 /bin/true가 실행될 것이고, 반대의 경우라면 /bin/false가 실행될 것입니다.

 

 

 

 

 

또 다른 예를 하나 더 보겠습니다.

 

 

 

 

 

modprobe $MODULE $RESOURCES > /dev/null 2>&1

if [ $? = 0 ] ; then

        action $"Loading ISDN modules" /bin/true

        touch /var/lock/subsys/isdn

else

        action $"Loading ISDN modules" /bin/false

        modprobe -r $MODULE > /dev/null 2>&1

fi

 

 

 

위의 예는 첫번째 행인 modprobe 실행한 결과가 0이라면(정상적으로 실행되었다면) then문장인 action행과 touch행이 실행되어 /bin/true 실행됩니다.

 

 

 

 만약 결과가 0 아니라면(else)  아래의 action행과 modprobe행이 실행되어 /bin/false 실행됩니다.

 

 

 

 

 

 

한가지 예를 보겠습니다.

 

 

 

 아래의 예는 load firmware()라는 함수를 실행하는 함수로서 정상적으로 로딩이 되었는가를 체크하는 것입니다.

 

 

 

 

 

function load_firmware()

{

    # loading firmware

    if [ -n "$FIRMWARE" ] ; then

        $FIRMWARE >/dev/null 2>&1

        if [ $? -eq 0 ]; then

            action $"Loading Firmware" /bin/true

        else

            action $"Loading Firmware" /bin/false

        fi

    fi

}

 

 

 

, 정상적으로 로딩이 되었을 경우에는 action $”Loading Firmware” /bin/true행이 실행이 되며 그렇지 않을 경우에는 action $”Loadin Firmware” /bin/false행이 실행됩니다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,791 개
  • 현재 접속자 :  158 명