연습 연습을하고 있어요.
인수로 월 번호가 부여되고이 번호를 월 이름으로 변환하는 스크립트를 작성하십시오. 결과가 표준 출력으로 인쇄됩니다.
나는 해결책을 만들었다 :
#test for number of argument
if [ "$#" -eq 0 ] ;
then
echo -e "No argument."
echo -e "Write a number between 1 and 12."
exit 1
elif [ "$#" -gt 1 ] ;
then
echo -e "More than 1 argument."
echo -e "Write a number between 1 and 12."
exit 1
else
numb=$1
case "$numb" in
1) echo "Month: January";;
2) echo "Month: February";;
3) echo "Month: March";;
4) echo "Month: April";;
5) echo "Month: May";;
6) echo "Month: June";;
7) echo "Month: July";;
8) echo "Month: August";;
9) echo "Month: September";;
10) echo "Month: October";;
11) echo "Month: November";;
12) echo "Month: December";;
*) echo -e "You wrote a wrong number. Try again with writing number between 1 and 12.";;
esac
fi
exit 2
exit 0
무엇 exit 1, exit 0
을 exit 2
의미하고 왜 사용합니까?
답변
쉘 종료 코드에 대한 하나의 좋은 참조가 있습니다 .
Exit code 0 Success
Exit code 1 General errors, Miscellaneous errors, such as "divide by zero" and other impermissible operations
Exit code 2 Misuse of shell builtins (according to Bash documentation) Example: empty_function() {}
주의 사항 : 올바른 종료 코드를 사용하는 것은 필수 사항이 아니며 셸에서 적용하지 않습니다. 개발자가 현명하다고 생각하면 지침을 무시할 수 있습니다.
답변
exit
및 숫자를 사용하면 스크립트 결과를 쉽게 알 수 있습니다. bash 명령이 리턴 코드를 출력하는 방식을 모방합니다. bash 명령으로 리턴 코드 0은 일반적으로 모든 것이 오류없이 성공적으로 실행되었음을 의미합니다. exit
또한 해당 시점에서 스크립트 실행을 중지하고 명령 행으로 돌아갑니다.
0보다 큰 리턴 코드는 일종의 오류를 나타내지 만 때로는 오류가 중요하지는 않지만 각 명령에 대해 각 리턴 코드의 의미를 알려주는 문서를 찾을 수 있습니다.
다음 $?
과 같이 쉘 변수를 사용하여 마지막 bash 명령의 리턴 코드를 얻을 수 있습니다 .
$ echo "something"
something
$ echo $?
0
$ cp
cp: missing file operand
Try 'cp --help' for more information.
$ echo $?
1
스크립트에서 이것을 사용하면 실행이 완료되었을 때와 같은 방식으로 리턴 코드를 쿼리 할 수 있습니다. 그래서 당신은 그것을 볼 수 있습니다 :
exit 2
exit 0
당신은 결코 그 exit 0
부분에 도달 할 수 없기 때문에 의미가 없습니다 .
답변
그 자체만으로 exit
종료 값이 0이거나 스크립트가 성공적으로 완료되었음을 나타냅니다. 성공적인 완료를 나타 내기 위해 exit 명령에 0 인수를 추가하지 않아도됩니다. 잘못된 조건을 테스트하더라도 스크립트가 성공적으로 종료 될 수 있습니다. 이 경우 특히 오류 (또는 1) 조건으로 종료하려고합니다.
echo -e "Enter numbers 1-4" \c"
read NUM
case $NUM in
1) echo "one";;
2) echo "two";;
3) echo "three";;
4) echo "four";;
*) echo "invalid answer"
exit 1;;
esac
exit
마지막 줄 의 명령이 전혀 없어도됩니다. 0으로 호출되거나 전혀 호출되지 않을 수 있습니다. exit 명령에 1 인수를 지정하지 않으면이 모든 경우에 대한 답은 echo $?
0이됩니다.
그러나 exit 명령에 1 인수를 지정하면 응답 echo $?
이 1이됩니다. 따라서 스크립트가 오류 조건으로 종료되도록 지정하려면 exit 명령에 1 인수를 사용하십시오.