표준 스트림 & 인자

Bash 스크립팅 입문

Alex Scriven

Data Scientist

STDIN-STDOUT-STDERR

Bash 스크립팅에는 프로그램을 위한 세 가지 ‘스트림’이 있습니다:

  • STDIN(표준 입력): 프로그램으로 들어오는 데이터 스트림
  • STDOUT(표준 출력): 프로그램에서 나가는 데이터 스트림
  • STDERR(표준 에러): 프로그램의 오류 스트림

기본적으로 이 스트림들은 터미널에서 읽고 터미널로 출력합니다.

스크립트 호출에서 2> /dev/null을 볼 수 있는데, 이는 STDERR를 삭제하도록 리디렉션합니다. (1> /dev/null은 STDOUT)

Bash 스크립팅 입문

STDIN-STDOUT 도식

앞서 만든 파이프라인을 사용해 표준 스트림을 도식으로 보여드립니다:

표준 스트림 다이어그램

Bash 스크립팅 입문

STDIN 예시

3줄의 데이터가 있는 텍스트 파일(sports.txt)을 가정합니다.

football
basketball
swimming

cat sports.txt 1> new_sports.txt 명령은 파일에서 읽은 내용을 STDOUT으로 새 파일에 쓰는 예시입니다. cat new_sports.txt로 확인해 보십시오

football
basketball
swimming
Bash 스크립팅 입문

STDIN vs ARGV

Bash 스크립팅의 핵심 개념은 인자(arguments) 입니다

스크립트 실행 호출 뒤에 공백을 두고 인자를 추가하면 스크립트 내부에서 사용할 수 있습니다.

  • ARGV는 프로그램에 전달된 모든 인자의 배열입니다.
  • 각 인자는 $ 표기로 접근합니다. 첫 번째는 $1, 두 번째는 $2
  • $@$*는 ARGV의 모든 인자를 반환합니다
  • $#는 인자의 개수(길이)를 반환합니다
Bash 스크립팅 입문

ARGV 예시

예제 스크립트(args.sh)를 봅시다:

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash 스크립팅 입문

ARGV 예제 실행하기

이제 bash args.sh one two three four five를 실행합니다

one
two
one two three four five
There are 5 arguments

 

#!/usr/bash
echo $1
echo $2
echo $@
echo "There are " $# "arguments"
Bash 스크립팅 입문

연습해 봅시다!

Bash 스크립팅 입문

Preparing Video For Download...