옵션은 쉘이나 스크립트의 행동을 변경하도록 설정해 줍니다.
set 명령어는 스크립트 안에서 옵션을 켤 수 있게 해 줍니다. 옵션이 적용될 곳에서 set -o -option-name 이라고 하거나 간단하게 set -option-abbrev 라고 하면 됩니다. 이 두 가지 형태는 동일하게 동작합니다.
#!/bin/bash set -o verbose # 모든 명령어는 실행전에 echo 됨. |
#!/bin/bash set -v # 위와 완전히 똑같음. |
참고: 스크립트에서 옵션을 끄고 싶다면 set +o option-name 이나 set +option-abbrev 라고 하세요.
#!/bin/bash set -o verbose # 명령어가 echo 를 킵니다. command ... command set +o verbose # 명령어가 echo 를 끕니다. command # echo 되지 않습니다. set -v # 명령어 echo 를 킵니다. command ... command set +v # 명령어 echo 를 끕니다. command exit 0 |
스크립트 헤더인 #! 뒤에 옵션을 적어줘서 옵션을 켤 수도 있습니다.
#!/bin/bash -x # # 스크립트 내용이 나옵니다. |
명령어 줄에서 옵션을 켜는 방법도 있습니다. set으로 안 먹는 몇몇 옵션은 이 방법을 쓰면 됩니다. 이런 옵션중 하나인 -i는 스크립트를 대화형 모드(interactive)로 돌게 합니다.
bash -v script-name
bash -o verbose script-name
다음은 몇 개의 유용한 옵션들 목록입니다. 단축형이나 완전한 형태중 하나로 지정해 줄 수 있습니다.
표 31-1. bash 옵션들
단축형 | 이름 | 뜻 |
---|---|---|
-C | noclobber | 파일이 재지향에 의해 덮어 써지지 않게 막아줌(>| 를 쓰면 가능할 수 있음) |
-D | (none) | $ 다음에 나오는 큰 따옴표로 쿼우트된 문자열 목록을 보여주기만 하고 명령어를 실행시키지 않음 |
-a | allexport | 정의된 모든 변수를 export 시킴 |
-b | notify | 백그라운드로 돌던 작업의 종료를 알려줌(스크립트에서는 그렇게 자주 쓰이지 않음) |
-c ... | (none) | ...에서 명령어를 읽어 들임 |
-f | noglob | 파일명 확장(globbing)을 끔 |
-i | interactive | 스크립트를 대화형(interactive) 모드로 돌게함 |
-p | privileged | 스크립트를 "suid"로 돌게함(조심할 것!) |
-r | restricted | 스크립트를 제한된 모드로 돌게함(21장 참고) |
-u | nounset | 정의 안 된 변수 사용시 에러 메세지 출력후 강제 종료 |
-v | verbose | 명령어 실행 전에 명령어를 표준출력으로 출력 |
-x | xtrace | -v와 비슷하나 명령어를 확장 |
-e | errexit | 첫번째 에러에서 스크립트를 취소(0 이 아닌 상태로 종료하는 명령어) |
-n | noexec | 스크립트의 명령어를 읽기만 하고 실행은 안 함(문법 체크) |
-s | stdin | 표준입력에서 명령어를 읽어 들임 |
-t | (none) | 첫번째 명령어 바로 다음에 종료 |
- | (none) | 옵션 플래그의 끝. 나머지 인자들은 모두 위치 매개변수로 인식. |
-- | (none) | 위치 인자로 안 받아 들임. 인자가 주어지면 (-- arg1 arg2), 위치 매개변수는 인자로 세트됨. |