쉘프로그래밍강좌054: 명령의 실행이 참(0)임을 반환하는 true
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,218 조회
- 0 추천
- 목록
본문
쉘프로그래밍강좌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행이 실행됩니다.
관련자료
-
이전
-
다음