Bash Shell Programming

Bash Shell Programming(6)

Joon0464 2021. 7. 23. 01:49

본 글은 아래 영상을 통해 공부하고 작성했습니다. 제 글보다 영상 시청이 더 도움 될 것입니다.

https://youtu.be/38wy3gsiR6Q

1. Positional Parameters

  • 위치 매개변수
cp /etc/passwd ./pass

cp 명령어 뒤에 첫 번째 argument로 /etc/passwd가 입력되고 두 번째 argument로 ./pass가 입력된 값이 변수로 저장되서 프로그램으로 전달된다.

cp라는 명령어 자체는 실제로 바이너리(실행) 파일이다.

/usr/bin/cp /etc/passwd /home/ubuntu/pass

실제로 명령어가 실행될 때의 모습은 위와 같다.

여기서 /etc/passwd 와 /home/ubuntu/pass가 argument data가 되는 것이다.

이러한 argument data와 프로그램 이름(cp)은 변수에 저장되어 프로그램으로 전달되는 방식이다.

여기서 /usr/bin/cp 는 $0으로 /etc/passwd는 $1로 /home/ubuntu/pass는 $2로 지정된다.

이렇게 $0,$1,$2 각각의 변수에 저장된 argument data가 cp라는 프로그램에 전달되는 것이다.

$0, $1, $2가 바로 위치 매개변수인 것이다.

test.sh file1 file2

이제 직접 test.sh라는 쉘 스크립트를 작성했다고 가정했을 때 사용자는 file1, file2를 위치 매개변수로 받아서 사용하고 싶은 경우가 발생한다.

쉘 스크립트뒤에 공백을 주고 argument data를 입력하면 test.sh가 $0으로 시작하여 $1, $2 .... $9 ${10} ... 의 변수에 저장된다.

  • 입력하는 argument들은 $0, $1, $2와 같은 변수에 저장되어 script에 전달
  • Special Shell Variables

$# :  argument 개수

$@, $*: argument 전체

$$: 로그엔 쉘의 프로세스 ID

$PWD: 현재 작업 디렉터리

$PPID: 부모 프로세스 ID

 

Example 1

# cd ~/bin
# vi parameter-exam1.sh

#!/bin/bash
#: Usage                : parameters-exam1.sh arg1 arg2 arg3
echo "The script name: $0"
echo "The first argument: $1"
echo "The second argument: $2"
echo "The third argument: $3"
echo "The number of arguments: $#"
echo "The list of argument: $*"
echo "The list of argument: $@"

# chmod u+x parameter-exam1.sh

작성한 쉘 스크립트를 argument를 주고 실행한 모습이다.

 

Example 2

# cd ~/bin
# vi parameter-exam2.sh

#!/bin/bash
#:Usage         :parameters-exam2.sh directory name
#:Author        :"hyunjoon song"
echo "[$1 Directory]"
echo "==========================="
date +%Y-%m-%d
echo "==========================="
du -sh $1 2> /dev/null
echo

# chmod u+x parameter-exam2.sh

연습 문제

첫 번째 argument로 입력한 디렉토리의 모든 파일 목록을 /tmp/날짜.txt의 파일에 저장하는 shell script 작성 하시오.

#!/bin/bash
ls -l $1 > /tmp/$(date +%Y-%m-%d).txt

 

'Bash Shell Programming' 카테고리의 다른 글

Bash Shell Programming(8)  (0) 2021.07.25
Bash Shell Programming(7)  (0) 2021.07.23
Bash Shell Programming(5)  (0) 2021.07.22
Bash Shell Programming(4)  (0) 2021.07.21
Bash Shell Programming(3)  (0) 2021.07.21