개요
- 셀은 사용자가 입력한 명령을 해석하고 커널에서 전달하고, 처리 결과를 반대로 사용자에게 전달하는 역할을 한다.
- 텍스트 모드나 터미널 처럼 명령어를 입력하는 환경이이 셸이라고 생각하면 된다.
환경변수
- 셀은 여러가지 환경 변수 값을 갖는다. 설정된 환경 변수는 형식을 쓰면 확인할 수 있다.
- echo $환경변수이름
호스트이름 출력
- echo $HOSTNAME 그외의 환경 변수는 printenv 명령을 입력하면 대부분이 출력된다.
- (일부는 printenv로 나타나지 않는다.)
- 환경변수의 값을 변경하려면 다음과 같은 형식을 사용한다.
- export 환경변수=값
셸 스크립트 작성과 실행
- 셀에서 변수는 사용 전에 미리 선언하지 않으며, 변수에 처음 값이 할당되면서 자동으로 변수가 생성된다.
- 모든 변수는 문자열(string) 로 취급되며, 숫자를 넣어도 문자로 취급된다.
- 변수 이름은 대소문자를 구분한다.
- 즉, $tiene라는 변수와 $TIENE라는 변수는 다른 변수다.
- 변수를 대입할 때 = 좌우에는 공백이 없어야 한다.
tiene=Hello
tiene=123+456 -> 정상이지만 "123+456"라는 문자열을 인식함
- 스크립트 작성 처음에는 #!/bin/sh를 넣어야한다. 스크립트를 실행할 셸을 지정하는 선언문이다.
- #! /bin/[word] 에는 사용할 셸을 넣으면된다.
- 스크립트 마지막에는 exit 0를 입력하여 스크립트 종료를 선언한다.
#!/bin/sh -> 스크립트 실행 셸 선언
test="Hi tiene" -> 문자열 test에 변수를 지정함
echo $test -> 변수를 출력함
echo "$test" -> 변수를 출력하고 나온 값을 ""로 묶음
echo '$test' -> 변수 해석이 아닌 문자열로 취급
echo \$test -> 변수 해석이 아닌 문자열로 취급
echo 값 입력 :
read test -> 입력문
echo '$test' = $test
exit 0 -> 스크립트 종료
간단한 셸 스크립트 작성
- exit 0 는 스크립트 종료를 선언을 의미한다.
#!/bin/sh
echo "사용자 이름 : " $USER
echo "호스트 이름 : " $HOSTNAME
exit 0
- $USER와 $HOSTNAME은 각각 환경변수로 지정되어있다.
- 현재 접속된 user와 hostname이 변수로 설정되어 해당 값을 불러오는 echo를 통해 변수에 따라서 변한다.
- 다음과 같이 스크립트 파일을 작성했다.
- 셸 스크립트 파일을 속성을 실행 가능하도록 변경한 후에 ./<스크립트 파일> 명령으로 실행한다.
셸 스크립트 숫자 계산
- 변수에 대입된 값은 모두 문자열로 취급 된다.
- 만약 변수에 들어 있는 값을 숫자로 해서 +, -,*,/ 등의 연산을 하려면 expr을 사용하면 된다.
- 숫자 1 왼쪽에 있는 역따옴표(`)로 묶어줘야 한다.
- 그리고 수식에 괄호를 넣으려면 그 앞에 반드시 역슬래쉬(\)를 붙여 주어야 한다.
- 또한 +,-,/와 달리 곱하기(*) 기호도 예외적으로 앞에 역슬래쉬(\)붙여 줘야 한다.
#!/bin/sh
num1=100
num2= $num1+200
echo $num2
num3=`expr $num1 + 200`
echo $num3
num4=`expr \( $num1 + 200 \) / 10 \* 2`
echo $num4
exit 0
- ; 세미콜론을 붙여서 read 입력문을 동시에 실행가능하다.
셸 스크립트 파라미터 변수
- 파라미터 변수는 $0, $1, $2..의 형태를 갖는다.
- 이는 자신을 실행한 명령어의 파라미터를 말한다.
- 예를 들어 yum -y install xinetd" 명령을 실행하면 다음과 같다.
명령어 yum -y install xinetd
파라미터 변수 $0 $1 $2 $3
- 즉 $0-> yum , $1-> -y 값이 들어간다. 또한 전체 파라미터는 $*로 표현된다.
#!/bin/sh
echo "실행 명령어 이름은 <$1> 이다"
echo "옵션은 <$2> 이고, 설치를 위해 <$3> 를 입력한다"
echo "설치할 서비스 이름은 <$4> 다"
echo "전체 명령어는 <$*> 이다"
exit 0
sh par.sh yum -y install httpd
'IT > ㄴ Linux Shall Script' 카테고리의 다른 글
[Linux] Shell Script - 반복문 [ while / for ] (0) | 2023.07.24 |
---|---|
[Linux] Shell Script - 다중 if 문 / case 문 / 파일 연산자 [ elif/ case] (0) | 2023.07.21 |
[Linux] Shell Script - if 문 기초 [if / else / 비교 연산자] (0) | 2023.07.20 |