728x90
반응형

 

 

 

 

[Ubuntu Linux] Linux 쉘(shell) 기본 문법

 

 

 

Shell은 Terminal에서 명령어를 입력하여 사용하기도 하지만, 프로그래밍하여 .sh 실행파일을 생성하여 사용하기도 한다.

 

 


1. 최상단에 #!/bin/bash 추가
  - sh파일을 작성할때는 반드시 최상단에  #!/bin/bash 기록해줘야 해당 Shell을 통해 실행한다.

 


2. Shell 파일 실행 방법 ( ./ )
  - sh / source / . 등은 권한이 없어도 수행이 가능하지만, ./ 로는 권한없이 수행이 불가하다.

 


3. 주석은 #을 이용한다.

 


4. 출력은 echo,  printf, read(C에서 Scanf와 같음, 입력을 기다림) 등을 이용한다.
a=10
echo : 자동개행
printf : 개행을 해줘야한다

 


5. if 블록은 fi로 끝난다.
num=7
if (( ${num} == 7 )); then
    equal
else
    not equal
fi

 


6. for문은 do 반복수행문, done으로 끝난다
arr = (a b c d) # 배열변수 선언, 띄어쓰기 주의
for x in ${arr[@]}; do  # arr에 @는 모든 원소를 의미, i로 받아옴
echo $x
done


7. 변수에 타입은 없으며, 선언을 제외하고 사용시 $를 붙인다.


8. 기본변수로 $0은 실행 파일명을 가지며, $# 파라미터 갯수를 가지며,  $$ 프로세스ID를 나타낸다.
기본변수 
  - \$0 :  $0
  - \$# :  $#
  - \$$ :  $$


9. 실행시 매개변수는 들어온 순서대로 $1 ~ $999 까지 사용가능하며, $* , $@을 통해 한번에 받을수 있다.
mine=("probecoding" "30" "IT")
echo ${mine[*]}  # 모든 데이터 출력


10. 산술연사는 `를 감싸 expr로 표현한다.
   실행시 매개변수 3개이상 주어야 함 a,b,c에서 받음
a=$1
b=$2
c=$3
echo $1
echo b + c = `expr $b + $c`   # `이거로 감싸줘야 연산이 됨
\$@ :$@
\$* :$*

num=`expr \( 10 + 20 \) / 8 - 8`

 

 

비교 연산자 의미
-eq 같음
-ne 같지 않음
-gt 더 큼
-ge 크거나 같음
-lt 더 작음
-le 더 작거나 같음
-z 문자열이 null인가?
-n 문자열이 null이 아님
-a 논리 and
-o 논리 or

 

 

 

728x90
반응형

+ Recent posts