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