파라미터 변수

위치 매개변수(Positional Parameters)란?

복사를 수행하는 cp 명령어의 경우 원본파일과 복사될 파일명을 같이 입력합니다.

cp 원본파일명 복사될파일명

즉, cp 명령은 두개의 변수값을 필요로 하고, 이렇게 전달받는 값들은 위치 파라미터를 통하게 됩니다.

변수의 전달

스크립트를 실행할때 전달 될 수 있는 값들을 지정하는 방법입니다.

스크립트 값1 값2 값3 값4 ...

파라미터 변수는 $0, $1, $2… 형태(실행하는 명령의 각 부분을 변수로 지정한다는 의미)

10번째 변수는 ${10} 형태로 처리됩니다.

  • 첫번째 $0에는 스크립트의 이름이 전달됩니다.

예) 다음과 같이 명령이 실행되는 경

apt-get -y install gftp # 명령의 경우 

$0에는 apt-get이, $1에는 -y가, $2에는 install이, $3에는 gftp가 저장됨

파라미터 변수의 목록

$0, $1, $2… 형태로 직접 변수를 접근할 수 있지만, $*를 통하여 리스트로도 가지고 올 수 있습니다.

  • Number od Arguments : $#

  • List of all parameters : $@, $*

    명령 전체의 파라미터 변수는 $*로 나타냄 ($0는 제외)

실습

파일명: args.sh

#!/bin/sh
echo "실행파일 이름은 $0 이다"
echo "첫번째 파라미터는 $1 이다"
echo "첫번째 파라미터는 $2 이다"

echo "전체 파라미터는 $* 이다"
exit 0

실행결과

hojin@hojin3:~/bin$ args.sh 1번 2번
실행파일 이름은 /home/hojin/bin/args.sh 이다
첫번째 파라미터는 1번 이다
첫번째 파라미터는 2번 이다
전체 파라미터는 1번 2번 이다

특별 쉘 변수

셀의 특별한 값들을 저장하는 몇개의 변수들이 존재합니다.

로그인 shell의 pid : $$

hojin@hojin3:~/bin$ ps -f
UID        PID  PPID  C STIME TTY          TIME CMD
hojin     1144  1143  0 Mar26 pts/0    00:00:00 -bash
hojin     1202  1144  0 00:58 pts/0    00:00:00 ps -f

현재 로그인된 셀의 pid를 확인해 봅니다. 1144번으로 확인됩니다.

hojin@hojin3:~/bin$ echo $$
1144

즉, 쉘에서는 $$에는 1144값이 들어가 있습니다.

현재 작업 디렉토리: $PWD

hojin@hojin3:~/bin$ echo $PWD
/home/hojin/bin

부모 프로세스 id : $PPID

과제

다음 조건에 맞는 shell script를 작성하세요

  • 첫번째 argument로 입력한 디렉터리의 모든 파일목록을 /tmp/날짜.txt파일에 저장하는 셀 스크립트를 작성해 봅니다.

    결과

    $lab2.sh /usr/bin
    $cat /temp/20230327.txt
    ... /user/bin 디렉터리의 모든 파일 목록이 출력됩니다.
    
서브목차