[Linux] Shell Script 기초 [echo]
Nowhere 와 Now here 의 차이

IT/ㄴ Linux Shall Script

[Linux] Shell Script 기초 [echo]

TIENE 2023. 7. 20. 15:07
반응형

개요

- 셀은 사용자가 입력한 명령을 해석하고 커널에서 전달하고, 처리 결과를 반대로 사용자에게 전달하는 역할을 한다.

- 텍스트 모드나 터미널 처럼 명령어를 입력하는 환경이이 셸이라고 생각하면 된다.

 

 

환경변수

- 셀은 여러가지 환경 변수 값을 갖는다. 설정된 환경 변수는 형식을 쓰면 확인할 수 있다.

- 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


 

반응형