본문 바로가기
공부,일/셸 스크립트

쉘스크립트 실습 20210621

by fromnothing1 2021. 6. 21.

파이프

왼쪽 명령어 | 오른쪽명령어 

왼쪽 명령어 결과를 오른쪽에 전달 

 

기본쉘 자식쉘

bash 쓰면 자식 쉘로 감

 

변수

변수는 $ 표시로 나타낼 수 있다. 

기본적인 변수 

 

 

' '  vs " "

'' 은 안에 변수 값을 해석하지 안고 그대로 보여줌

"" 은 안의 특수 문자를 해석해서 보여줌 

 

즉 "$PWD"  는 PWD 라는 변수를 의미하고 

'$PWD' 는 문자 그자체를 의미한다. 

응용예제

 

```(백틱) - tab 키 위에 있음

: 내용을 명령어로 간주하고 실행 시켜줌 

test 문자 찍히고 ls -la 이 실행 되는 것을 알 수 있다.

 

리다이렉션 >

실습 1,2

cf) cat 은 파일을 읽는 함수 

빈파일 a.txt 만듬 

 

ls -zzz 2> a.txt 

ls 는 -zzz 가 없으므로 에러 메세지가 뜬다  

이 에러 메세지를 a.txt 에 보내는 것이다. 

 

여기서 2 는 표준에러 출력stderr 을 의미한다. 

즉 에러는 표준 출력 스트림2 번의 출력을 a.txt 로 방향을 틀어주는 것이다.  

 

실습 3, 4

 ls -al 2> a.txt 1 >&2
1 번도 2 로 가고 

2 번은 a.txt 로가고 

 

 /dev/null 은 삭제 하는 스크립트 

 

 

alias, history

 

쉘스크립트

스크립트 이름 적으면 스크립트 실행 됨 

-우리는 기본 쉘이 bash 쉘 이다. 

 

우금투 리눅스에는 sh , dash 쉘등도 자동으로 깔려있다 

하지만 우리는 bash 기본 쉘임으로 bash 로 실행하자 

#!/bin/bash 가 bash 로 실행한다는 뜻이다. 

 

즉 sh myshell.sh 와 같이 실한다면 #!/bin/bash 무시되고 sh쉘로 실행된다는 의미

 

쉘스크립트 구조 

if 문 

  1 #!/bin/sh
  2
  3
  4 if [ "$SHELL"="/bin/bash" ]
  5 then
  6 echo "당신의 쉘은 본 쉘입니다."
  7 fi

 

괄호와 문자 사이에는 무조건 띄어 써야 한다.  if 랑 괄호도 무조건 띄어야 함 

mv 파일 이동함수 , 이름 바꾸기도 가능 

1 #!/bin/sh
  2
  3 if [ -e "kam1.sh" ]
  4 then
  5 echo "kam1.sh 파일이 존재 "
  6 fi

 

ch ) 

Ctrl Z 는 위도우 에서 최소화랑 같은 배그라운드에서 돌아가고 있음 fg 명령하면 다시 뜬다. 

 

 

인자 

실행  명령어 뒤에 오는 문자를 인자로 받을 수 있다. 

 

  1 #!/bin/sh
  2
  3 echo "인자 0 : ${0}"
  4 echo "인자 1 : ${1}"
  5 echo "인자 2 : ${2}"
  6 echo "인자 3 : ${3}"
  7 echo "인자 4 : ${4}"
  8
  9

 

read

사용자로 부터 입력을 받을 수 있다.

  1 #!/bin/bash
  2
  3 echo "글자를 입력하시오"
  4 read INPUT_DATA
  5
  6 echo " 입력된 글자는 [${INPUT_DATA}]입니다."
  7
  8

case 문 

  1 #!/bin/bash
  2
  3
  4 case "$1" in
  5     일)
  6     echo "일";;
  7     1)
  8     echo "1";;
  9     *)
 10     echo "글쎄";;
 11 esac

case 문 심화 

  1 #!/bin/bash
  2
  3 echo "1-9 숫자입력"
  4
  5
  6
  7 read NUMBER
  8 case "$NUMBER" in
  9 1|2|3)
 10     echo "123"
 11     ;;
 12 4|5|6)
 13     echo "456"
 14     ;;
 15 7|8|9)
 16     echo "789"
 17     ;;
 18 esac
 19
 20

 

expr 정수 숫자 연산 

fromnothing1@kam:~$ expr 3 + 3
6
fromnothing1@kam:~$ expr 3 \* 3
9
fromnothing1@kam:~$ echo `expr 3 + 3`
6
fromnothing1@kam:~$ echo 'expr \( 3 + 3 \) \* 4'
expr \( 3 + 3 \) \* 4
fromnothing1@kam:~$ echo `expr \( 3 + 3 \) \* 4`
24
fromnothing1@kam:~$

 

``안에 expr 적어야지 실행 된다. 

 

bc 실수 계산도 가능한 명령어 

fromnothing1@kam:~$ echo "(3+2)*(5-2)"
(3+2)*(5-2)
fromnothing1@kam:~$ echo "(3+2)*(5-2)" | bc
15
fromnothing1@kam:~$ echo "2/3" | bc
0
fromnothing1@kam:~$ echo "scale=2;2/3" | bc
.66
fromnothing1@kam:~$ echo "ibase=16;A+B" | bc
21
fromnothing1@kam:~$ echo "obase=2;2+3" | bc
101
fromnothing1@kam:~$

bc 는 파이프 명령어와 함께 쓰이며 반올림은 하지 않는다.

 

소숫점은 scale 명령어를 통해서 가능하다.

 

ibase, obase를 통해서 진법을 설정 할 수 있다. 

  1 #!/bin/bash
  2
  3 DATA1="SMART GROUP"
  4 echo "1:$DATA1"
  5 echo "2:${DATA1:-"헬로키티2"}"
  6 echo "3:${DATA2:-"헬로키티3"}"
  7 echo "4:${DATA1:="헬로키티4"}"
  8 echo "5:${DATA2:="헬로키티5"}"
  9 echo "6:${DATA2:="헬로키티6"}"
 10 echo "7:${DATA1:+"헬로키티7"}"
 11 echo "8:${DATA1:?"헬로키티8"}"
 12 echo "9:${DATA3:?"헬로키티9"}"
 13 echo ===========================
 14

 

'공부,일 > 셸 스크립트' 카테고리의 다른 글

20210622셀스크립트 실습  (0) 2021.06.22
달팽이 행렬 출력하기  (0) 2021.06.22
20210618  (0) 2021.06.18
shell scrip 권한 읽고 수정하는 방법  (0) 2021.06.18
winscp  (0) 2021.06.18

댓글