티스토리 뷰
Shell Script 문법
변수
쉘 변수는 대소문자를 구분함.
쉘 변수는 데이터를 문자열로 저장하여, 실제 수치를 대입해도 문자열이 저장됨.
쉘 변수의 값을 사용할 때 $를 사용. 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 |
- fsop
- 본선가고싶다
- HackCTF
- oob
- SQLi
- ebp change
- TLS
- stack reusing
- hacking
- fastbindup
- FSB
- pwnable
- overflow
- heap
- glibc
- rt_sigreturn
- 해킹
- tcache
- pwable
- codegate
- srop
- shellcoding
- fastbin
- exit
- pwnable.tw
- Total
- Today
- Yesterday