티스토리 뷰



Shell Script 문법



  1. 변수

  • 쉘 변수는 대소문자를 구분함.

  • 쉘 변수는 데이터를 문자열로 저장하여, 실제 수치를 대입해도 문자열이 저장됨.

  • 쉘 변수의 값을 사용할 때 $를 사용. ex) echo $age

  • 쉘 변수의 값을 대입할 때 $을 사용하지 않음. ex) age = 14

  • C언어와 다르게 쉘 변수는 타입이 없다. (int, char, double 과 같은 타입이 없음.)


     1-1 환경변수

  • 쉘을 실행시키면 기본적으로 세팅되어 있는 변수이다.

  • 일반변수처럼 값을 얻어오거나 세팅할 수 있다.

  • $0 -> 쉘 스크립트 이름 //ex)asdf.sh

  • $# -> 스크립트에 넘겨진 인자의 개수 //ex) ./asdf.sh 1 2 3 4 인자 4개를 줬을 때 $#의 값은 4이다. C언어의 argc와 비슷하다.

  • $$ -> 쉘 스크리트의 프로세스 ID

     1-2 인자변수

  • 쉘 스크립트에 인자를 넘겨줄때 그 인자들에 대한 정보를 가지고 있는 변수

  • $1 ~ $nnn -> 넘겨진 인자들

  • $* -> 스크립트에 전달된 인자들을 모아놓은 문자열, 하나의 변수에 저장되며 IFS 환경변수의 첫 번째 문자로 구분 //ex) ./adsf.sh 1 2 3 4 echo $* -> 1 2 3 4 출력.

  • $@ -> "$*" 과 같으나 IFS 변수의 영향을 받지 않음

  • //ex) ./test.sh a1 a2 a3 a4

  • echo $@   -> a1 a2 a3 a4 출력




     2. 연산

  • 변수 = expr [산술식] //ex) hap =  expr $a + &b

  • 곱하기 연산은 \* 으로 사용 할 수 있음.

   

     2-1 매개변수 확장

    • 변수의 값을 문자열 등으로 대체하는 것.





     3. 조건문

3-1 문자열 비교

  • string - string이 빈 문자열이 아니라면 참

  • string1 = string2 - 두 문자열이 같다면 참

  • string1 != string2 - 두 문자열이 다르면 참

  • -n string - 문자열이 null이 아니라면 참

  • -z string - 문자열이 null이라면

3-2 산술 비교

  • expr1 -eq expr2 - 두 표현식의 값이 같다면 참(EQual)

  • expr1 -ne expr2 -  두 표현식의 값이 같지 않다면 참(Not Equal)

  • expr1 -gt expr2 -  expr1 > expr2 이면 참 (Greater Than)

  • expr1 -ge expr2 - expr1 >= expr2 이면 참 (Greater Equal)

  • expr1 -lt expr2 - expr1 < expr2 이면 참 (Less Than)

  • expr1 -le expr2 - expr1 <= expr2 이면 참( Less Equal)

  • ! expr - expr 이 참이면 거짓, 거짓이면 참

  • expr1 -a expr2 -expr1 AND expr2의 결과 (둘 다 참이면 참, AND)

  • expr1 -o expr2 - expr1 OR expr2의 결과 (둘중 하나만 참이면 참, OR)

3-3 if 구문

  • 형식 :

3-4 case 구문

  • ‘패턴’에는 *문자, 와일드카드를 사용할 수 있다.

3-5 AND 목록, OR 목록

  • &&(그리고), ||(또는)

  • 혼용이 가능하다 // ex) [조건]  && 문장1 || 문장2


     4. 제어문

4-1 for 문

  • for 문은 지정된 범위안에서 루프를 수행함.

  • 형식 :

4-2 while 문

  • for명령의 경우 횟수를 지정해서 루프를 수행하는 데는 문제가 있음.

  • while문은 실행 횟수가 지정되지 않았을 때 편리하다.

  • 형식 :

4-3 untill 문

  • while문과 동일한 효과를 내지만 조건이 반대이다.

  • untill문은 조건이 거짓일 동안 루프를 수행한다.

  • 형식 :

4-4 select 문

  • select문은 원하는 리스트를 출력하고 그 중 선택된 것을 돌려주는 구문.

  • break문을 사용해서 루프를 벗어나야 한다.








     5. 함수

  • 함수를 사용하면 코드를 최적화 할 수 있고, 코딩이 간결해지며, 재사용이 가능하다.

  • 형식 :

  • 사용 : 함수명 인자1, 인자2, …

     

     6. 명령어

  • 쉘에서 쓸 수 있는 명령어는 두가지로 나누어진다. (명령 프롬프트 상에서 실행 시킬 수 있는 외부 명령어와 쉘 내부 명령이다.

  • 내부 명령은 보통 쉘 내부나 쉘 구문상에서 쓰인다.

  • 외부명령은 쉘에 관계없이 사용이 가능하다.

6-1 break

  • 제어문이나 조건문의 루프를 빠져나갈때 사용.

6-2 continue

  • 제어문이나 조건문의 처음으로 돌아가서 다시 수행.

6-3 ‘:’ 명령

  • 의미없는 명령. 논리값 true를 대신해 씀.

6-4 ‘.’ 명령

  • . 명령을 사용하면 현재 쉘에서 명령을 실행시킴.

  • 그러므로 실행된 명령의 결과를 본 프로그램에서 사용할 수 있음.

6-5 echo

  • 문장을 출력.

  • 자동으로 개행문자가 삽입 됨.

6-6 eval

  • 인자의 실제 값을 구하는데 사용

6-7 exec

  • 현재 쉘을 다른 프로그램으로 대체

6-8 exit n

  • 현재 쉘을 종료한다. 종료 시 n값을 리턴.

6-9 export

  • 쉘에서 파생 된 자식 프로세스에서 export한 환경변수는 본래 쉘에서 관리.

6-10 expr

  • 표현식의 값을 구한다.

  • 요즘은 expr 보다는 $((계산식)) 구문을 많이 사용.

6-11 printf

  • C언어의 printf 명령과 흡사.

6-12 shift

  • 쉘의 인자를 한자리씩 아래로 (n->1 로) 이동.


쉘 스크립트- 계산기 만들기1

간단히 사칙연산 계산기이다.

위에 기본적인 문법을 이용하여 만들었다.


쉘 스크립트로 괄호식이 포함 된 계산기 만들기

간단히 echo $((수식)) 라는 문법을 통해 구현이 가능했다.

실행결과



'cs > etc' 카테고리의 다른 글

base64 알고리즘 과 충돌  (0) 2018.01.31
랜섬웨어와 예방법, 복구절차  (0) 2017.12.15
윈도우즈 파일 시스템 FAT32와 NTFS  (0) 2017.12.15
Comments