[클라우드 With리눅스/쉘프로그래밍(1) - 스크립트와 변수]

SooYeon Yeon·2022년 8월 22일

클라우드 With리눅스

목록 보기
26/39

쉘 프로그래밍

실습환경 구성하기

  1. wget, git, curl, vim을 설치한다.

    yum -y install wget && yum -y install git && yum -y install curl && yum -y install vim
  2. 처음 시작 시 vi를 입력하면 자동으로 vim이 실행되도록 하기 위한 설정

    vim .bashrc

    alias vi=’vim’

  3. 방화벽과 selinux 종료

    systemctl disable firewalld
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  4. 내부 자원들 또는 가상 머신들이 서버를 통해 외부와 통신이 가능하도록 IP forward 기능 활성화

    vi /etc/sysctl.conf

    파일에 net.ipv4.ip_forward = 1 추가

    또는

    echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

  5. 업데이트 (yum update)

    yum update -y
  6. user1 사용자는 sudo를 통해 루트 명령어 실행 가능. 단, sudo 입력 시 패스워드를 요구하지 말아야 함

    vi /etc/sudoers 

    wheel 검색하여 107 행 주석처리
    110행(NOPASSWD 있는 행) 주석제거

  7. 재부팅

    init 6

기본 쉘

  • 명령어 여러개 실행하기
# 앞 명령이 정상적으로 실행되어야 뒷 내용도 실행
yum -y install httpd && systemctl enable httpd

# 앞 문장이 오류 발생해도 뒤를 그냥 실행함
yum -y install httpd ; systemctl enable httpd

명령어를 하나하나 작성하지 않고, 스크립트로 작성

스크립트 파일 만들기

  • 첫번째 줄에는 사용하고있는 쉘을 지정
#!/bin/bash
  • #은 주석을 의미
  • 쉘은 파일에 나타나는 순서대로 명령을 처리
#!/bin/bash
# make script
date
who
  • chmod를 사용해 권한을 조종하고 아래와 같이 실행
# chmod u+x test1
# ./test1
  • 출력
touch test1.sh
vi test1.sh
#!/bin/bash
echo -n "what is your name? :"
echo $USER
echo
echo "what is your name? :"
echo $USER

echo -n : 옆에 출력

  • 입출력
echo -n "what is your name? :"
read name # 사용자로부터 입력을 받기위해 프롬프트 대기
		 # 사용자가 입력한 값은 name 변수에 담김
echo $name # 앞에 $가 있으면 이는 변수이다

변수

  • 변수에 넣는 모든 것은 문자열로 취급된다.
  • 공백없이 붙여써야한다.

환경변수

  • 환경변수는 $HOME, $USER 등아 있다.
  • 일반변수를 환경변수로 사용하고싶다면, export를 이용할 수 있다.
    • export 환경변수=값
  • 환경변수는 모든 시스템내에서 동일하게 사용할 수 있다.
  • 일반적으로 환경변수는 대문자를 사용하고 사용자변수는 보통 소문자를 사용한다.
  • printenv로 확인가능

변수

  • 임시로 값을 저장해 활용할 수 있는 박스

연관배열

  • key-value 형태
  • name[’name’] = “gildong”
  • 파이썬에서는 딕셔너리라고 함

배열은 번호를 이용, 연관 배열은 key-value를 이용하므로 배열은 인덱싱이 가능하다.

연관배열은 자료검색, 관리 등에 유용하다. 또한 JSON형태와 유사하게 key-value를 사용하므로 다른 프로그래밍 언어들과 연계하여 사용하기 유용하다. → NoSQL에 자료 관리가 유용하다.

bash에서도 동일하게 변수, 배열, 연관배열의 사용이 가능하다.

변수

환경변수

  • 사용자가 리눅스 시스템에 로그인을 하게 되면 해당 환경내에서 자동으로 부여되는 변수
  • 시스템 전체에 영향을 미친다.
  • env, printenv, set으로 환경변수 확인 가능
[root@sooyeon ~]# set | grep IFS
IFS=$' \t\n'

IFS는 사용자가 쉘 사용시 각각의 데이터를 구분하는 구분자

공백,탭,줄바꿈이 서로 다른 데이터로 인식한다는 것

예를들어 a:b:c:d는 1개의 데이터인 것

사용자변수

  • 사용자가 직접 만들어서 사용하는 변수
  • 해당 파일에서만 영향을 미친다.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

bash에서는 변수를 미리 지정할 필요 없고, 데이터 타입을 지정할 필요도 없다. 변수 선언과 동시에 값을 지정한다. bash는 모든 변수값이 str이다.

name=hello (o) name = hello (x, 명령어 name에 =, hello라는 옵션을 적용한 것으로 취급됨)

name=”hello all”과 같이 떨어져있는 경우에는 “로 묶어주는 것이 좋음

#!/bin/bash
echo "사용자 이름 : " $USER
echo "홈 디렉토리 : " $HOME
exit 0 # 종료 코드를 강제로 0으로 설정
  • 직전 실행한 코드, 명령의 종료 상태를 반환
echo $?
[root@sooyeon ~]# ping www.google.com -c 3
PING www.google.com (142.251.42.196) 56(84) bytes of data.
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=1 ttl=110 time=31.9 ms
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=2 ttl=110 time=30.3 ms
64 bytes from nrt12s47-in-f4.1e100.net (142.251.42.196): icmp_seq=3 ttl=110 time=31.4 ms

--- www.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2011ms
rtt min/avg/max/mdev = 30.383/31.241/31.915/0.670 ms
[root@sooyeon ~]# echo $?
0

0 : 정상종료

[root@sooyeon ~]# pin www.google.com -c 3
-bash: pin: command not found
[root@sooyeon ~]# echo $?
127

127 : command not found

[root@sooyeon ~]# ping www.test.pri -c 3
ping: www.test.pri: Name or service not known
[root@sooyeon ~]# echo $?
2

2 : name no

0이 아닌 것은 실패

[root@sooyeon 0726]# cat << EOF >test1.sh
> #!/bin/bash
>
> echo "hello all"
> EOF
[root@sooyeon 0726]# cat test1.sh
#!/bin/bash

echo "hello all"

PS1 : 일반 프럼프트

PS2 : >

PS3 : select문에서 주로 사용 1. ~ 2. ~ 3. ~하고 값을 받기위한 프롬프트를 실행

파라미터 변수(위치 변수)

  • 함수내로 전달하는 매개변수로도 활용가능
  • dnf -y install httpd
  • “dnf”는 패키지를 설치하는 명령
  • $1, $2, $3 …
  • 파라미터 변수는 명령과 옵션등을 변수로 활용할 수 있다.
  • $1은 DB 저장할 때 첫번째 열에 저장하라 등 가능
  • 매개변수가 가변길이 일 수도 있다.
  • 전체는 ∗(* (@도 사용)
명령dnf-yinstallhttpd
파라미터변수$0$1$2$3
#!/bin/bash
echo "hello $1"

0개의 댓글