2011-05-12 7 views
9

다음 스크립트가 있는데 x 줄에 오류가 발생하면 스크립트가 x 줄에서 실행을 중지하도록하고 싶습니다. 어떻게합니까?쉘 스크립트 중지 오류

 
pvcreate /dev/$1 
vgextend VolGroup00 /dev/$1 
lvextend --size +$2 /dev/VolGroup00/LogVol00 
resize2fs /dev/VolGroup00/LogVol00 

답변

9

이 부분을 실행하기 전에 set -e을 사용해야합니다.

1

반환 코드를 확인하려면 각 단계를 쿼리해야합니다. 즉, 각 조회에 대한 리턴 코드가 무엇인지 이해해야합니다 (각각 다를 수도 있음). 아래 예제에서는 vgextend에서 오류 코드 -1을 확인한 다음 -1을 반환합니다.

pvcreate /dev/$1 
vgextend VolGroup00 /dev/$1 

if [ $? == -1 ]; then 
     echo "vgextend returned an error" 
     exit -1; 
fi 

lvextend --size +$2 /dev/VolGroup00/LogVol00 
resize2fs /dev/VolGroup00/LogVol00 

일부 상황에서는 일부 오류가 허용 될 수 있으므로 -e가 과도 할 수 있습니다. 아래 예에서 파일이 존재하지 않으면 rm은 오류를 반환하지만 계속 진행할 수 있습니다 (예, 조건부 삭제가 가능하다는 것을 알고 있지만 예제는 작성 시점을 설명하기위한 것입니다).

# delete the file, it it exists 
rm thefile 
# create the file 
touch thefile 
+0

'rm somefile || '과 같이 이러한 가능성이있는 명령을 별도로 표시하는 것이 좋습니다. 사실 '. 이 경우'set -e'는 실행되지 않습니다. –