Special Parameters
$?
바로 이전에 실행된 명령의 종료 상태 값을 나타냅니다.
$$
shell 에서 Parent PID 값을 나타내는 변수는 $PPID
인데, shell 자신의 PID 를 나타내는
변수는 $PID 를 사용하지 않고 $$
를 사용합니다.
이 값은 subshell 에서도 같은 값을 가집니다.
bash 에서는
$BASHPID
변수를 이용해 subshell PID 도 구할 수 있습니다.
$!
&
메타문자를 이용하여 가장최근에 background 로 실행된 process id 를 나타냅니다.|
파이프로 연결된 명령 그룹일 경우 마지막 process id 가 표시됩니다.
$_
이전 명령에서 사용된 마지막 인수를 값으로 가집니다. 사용된 인수가 없으면 명령 이름이 됩니다.
$ mkdir -p foo/bar/zoo && cp myfile $_
$ mkfifo `mktemp -u` && exec {fd1}<> $_
파이프로 연결된 명령들은 subshell 에서 실행되므로 제외됩니다.
$ echo 000 && echo 111 | echo 222 && echo 333 $_
000
222
333 000
$ echo 000 && echo 111 | { echo 222 && echo 333 $_ ;}
000
222
333 222
$-
Set 명령에 의해 현재 shell 에 enable 되있는 option flags 을 보여줍니다.
Quiz
16 진수로된 RGB 값을 10 진수로 변환하여 출력을 하는 것입니다.
hex_to_rgb() {
: ${1/\#/}
(( r = 16#${_:0:2}, g = 16#${_:2:2}, b = 16#${_:4:2} ))
printf '%s\n' "$r $g $b"
}
$ hex_to_rgb '#abcdef'
171 205 239
------------------------
1. : ${1/\#/} 명령 라인은 $1 인수 값에서 '#' 문자가 제거되면 : abcdef 와 같게 됩니다.
2. 16#${_:0:2} 이것은 $_ 변수를 활용하는 것입니다.
이전 명령에서 사용된 마지막 인수는 abcdef 가 되므로 ${_:0:2} 의 값은 ab 가 됩니다.