파이프
왼쪽 명령어 | 오른쪽명령어
왼쪽 명령어 결과를 오른쪽에 전달
기본쉘 자식쉘
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 |
댓글