환경 구성 - [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번 라인에 의해 절대경로 출력
변수의 타입에는 로컬변수와 전역변수, 환경변수, 예약변수, 매개변수 등 다양하게 존재합니다.
[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...
쉘 스크립트 뿐만 아니라 마크다운도 배우며 써야하는 처지라 양껏 쓰는 건 아직 부담감이 있습니다.
얼른 익숙해져 여러분의 시간을 양질로 꽉 채울 수 있는 사람되겠습니다.
다음 진도 - 예약 변수, 매개 변수, 연산자