Bash script

명상록·2023년 2월 21일
0

shell script

목록 보기
4/5
post-thumbnail

환경 구성 - [Vmware Fusion]/[RHEL8]/[bash shell]

Shebang(#!)
쉘 스크립트를 작성할 때 항상 첫 번째 행은 다음과 같이 작성해 줘야 합니다.

[root@localhost ~]# mkdir example #앞으로 작업할 디렉토리 생성
[root@localhost ~]# cd example #생성한 디렉토리로 이동

[root@localhost example]# pwd
/root/example

[root@localhost example]# vi exp1.sh

1 #!/usr/bin/bash #shebang
2 
3 echo $(which bash) # 디렉토리 위치 출력

'명령모드 진입 후 :wq'

[root@localhost example]# chmod +x exp1.sh #실행권한 부여
[root@localhost example]# ll #ls -l
합계 4
-rwxr-xr-x. 1 root root  36  9월 14 00:00 exp1.sh

[root@localhost example]# ./exp1.sh #쉘 실행 
/usr/bin/bash #3번 라인에 의해 절대경로 출력

쉘 변수 선언

변수의 타입에는 로컬변수와 전역변수, 환경변수, 예약변수, 매개변수 등 다양하게 존재합니다.

  • 변수는 대, 소문자를 구별한다.
  • 변수의 이름은 숫자를 포함할 수 있지만, 숫자로 시작할 수 없다.
  • 변수에는 모든 값을 문자열로 저장된다.
  • 변수에는 자료형을 기입하지 않는다. (int number, char names[10]), 즉 아무런 값을 다 넣을 수 있다.
  • 값을 사용할 때는 변수명 앞에 특수문자 $를 사용한다. (Ex. echo ${data})
  • 값을 대입(삽입)할 때는 특수문자 $를 사용하지 않는다. (Ex. data=mac)
  • 변수를 생성할 때는 "=" 대입문자 앞뒤로 공백이 없어야 한다. (Ex. data="abcd")
[root@localhost example]# vi exp2.sh #쉘 작성

#!/usr/bin/bash

writer="dieyoung"
date=20220914
greet="앞으로의 행보를 기대해주세요."

echo "I'm ${writer}" #변수를 사용할 때는 ${}를 사용
printf "%s " $date 
echo $greet #값을 삽입할 때는 {}를 사용하지 않음


[root@localhost example]# chmod +x exp2.sh	#실행 권한 부여
[root@localhost example]# ./exp2.sh  #실행 결과
I'm dieyoung
20220914 앞으로의 행보를 기대해주세요.

TIP. exp2의 내용을 보면 echo와 printf의 차이를 알 수 있는데 개행의 차이가 있습니다.

[root@localhost example]# vi exp3.sh

string="Hello World" #전역 변수 선언

function string_test() {
        local string="hello" #지역 변수 선언
        echo ${string}
}

string_test	#함수 호출
echo $string #전역 변수 호출

[root@localhost example]# ./exp3.sh 
hello
Hello World
#exp3.sh에 이어서 작성함.

#환경 변수 선언
export hello_world="hello world..."
#자식 스크립트 호출은 스크립트 경로을 쓰면된다.
/root/example/export_test.sh

example 디렉토리에 exprot_test.sh 생성하고 환경 변수를 테스트한다.
#!/usr/bin/bash
echo ${hello_world}

작성 후 exp3.sh를 다시 실행하게 되면 아래와 같은 출력을 얻어낼 수 있다.
hello
Hello World
hello world...

마무리 점검

  • 로컬 변수 'exp2'
  • 전역 변수 'exp3'
  • 지역 변수 'exp3'
  • 환경 변수 'exp3'
  • 예약 변수
  • 매개 변수

쉘 스크립트 뿐만 아니라 마크다운도 배우며 써야하는 처지라 양껏 쓰는 건 아직 부담감이 있습니다.
얼른 익숙해져 여러분의 시간을 양질로 꽉 채울 수 있는 사람되겠습니다.

다음 진도 - 예약 변수, 매개 변수, 연산자

profile
등불은 꺼질 때까지 계속해서 환하게 빛을 비춘다.

0개의 댓글