0: 프로그램 또는 명령이 성공으로 종료했음을 의미
1-255: 프로그램 또는 명령어 실패로 종료했음을 의미
1: 일반에러
2: Syntax error
126: 명령을 실행할 수 없음
127: 명령이 존재하지 않음
128: 종료 시그널 +N
$cp file1
$echo $?
$sleep 100
<Ctrl><c>
$echo %?

위와같이 date를 쳤을때는 잘 종료되었다는 0 이 나오지만, 잘못 data를 치면 127로 명령어가 존재하지 않는다고 나온다.
x -eq y : x값과 y값이 같으면 true리턴
x -gt y : x값이 y값보다 크면 true리턴
x -ge y : x값이 y값보다 크거나 같으면 true를 리턴
x -lt y : x값이 y값보다 작으면 true를 리턴
x -le y : x값이 y값보다 작거나 같으면 true를 리턴
x -ne : x값과 y값이 같지 않으면 true를 리턴
-e file : 파일이 존재하면 true를 리턴
-d file : 파일이 디렉토리이면 true를 리턴
-f file : 파일이 디렉토리이면 true를 리턴
-x file : 파일이 디렉토리이면 true를 리턴

살펴보자면
위와 같으며,
test x -gt 5]
와 같이 나타낼수도 있다.
help test로 더 많은 test연산관련 확인 가능하다.
조건 명령어. command 실행결과에 따라 서로 다른 command를 실행한다.

#!/bin/bash
x=10
if test $x -gt 5
then
echo "x is grater than 5"
fi
#!/bin/bash
if test -e /etc/passwd
then
ls -l /etc/passwd
else
echo "/etc/paddwd file does not exist"
fi
case "$variable"in
pattern1) command1;;
pattern2) command2;;
*) command3;;
esac
위의 구조를 띄고 있다.
echo -n "What do you want?"
read answer
case $answer in
yes)echo "System restart.";;
no) echo "Shutdown the system.";;
*) echo "entered incorrectly";;
esac
와 같이 case문 선정가능하다.