$#
은 매개변수의 개수를 의미합니다.
$#
은 매개변수의 개수를 나타냅니다.
$ cat test1
#!/bin/bash
echo "parameter count : $#"
$ ./test1 1 2 3
parameter count : 3
$ ./test1 A B C D E
parameter count : 5
쉘 스크립트에서 변수를 선언할 때 $변수
방법과 ${변수}
가 있습니다.
이중 ${변수}
방법과$#
를 응용해서 매개변수의 마지막 값을 출력할 수 있는 방법이 있는데요.
${!#}
를 이용하면 매개변수의 마지막 값이 참조됩니다.
여기서 주의할 점은
${$#}
가 아닌${!#}
라는 점입니다.
$ cat test1
#!/bin/bash
echo "parameter count : ${!#}"
$ ./test1 A B C D E
parameter count : E
만약 매개변수 없이 실행하면 어떻게 될까요?
$ ./test1
parameter count : ./test1
파일 이름을 출력하는 것을 볼 수 있습니다.
!#
이 0
을 출력하고, 따라서 $0
가 되기 때문입니다.
$0
는 파일 이름
을 의미합니다.