POSIX 및 하이픈 : 보증 없음
POSIX 표준에 따라 함수 이름 은 유효한 이름이어야하며 이름 은 다음으로 구성 될 수 있습니다.
3.231 이름
쉘 명령 언어에서 휴대용 문자 집합의 밑줄, 숫자 및 알파벳으로 만 구성된 단어. 이름의 첫 문자는 숫자가 아닙니다.
또한, 별명은 유효해야 별명 으로 구성 할 수 있습니다 :
3.10 별칭 이름
셸 명령 언어에서 휴대용 문자 집합의 밑줄, 숫자 및 알파벳 문자로만 구성된 단어와 '!', '%', ',', '@'
구현시 별칭 이름 내의 다른 문자를 확장명으로 사용할 수 있습니다. (엠파 시스 광산)
두 경우 모두 허용되어야하는 문자 에는 하이픈이 표시 되지 않습니다 . 따라서 사용되는 경우 이식성이 보장되지 않습니다.
하이픈을 지원하지 않는 쉘의 예
dash
/bin/sh
debian-ubuntu 제품군 의 기본 쉘 ( )이며 함수 이름에서 하이픈을 지원하지 않습니다.
$ a-b() { date; }
dash: 1: Syntax error: Bad function name
흥미롭게도, 그것은 않습니다 위에서 언급 한 바와 같이, 이것이 비록, 별칭에서 지원 하이픈을 구현 특성 이 아니라 요구 사항 :
$ a_b() { printf "hello %s\n" "$1"; }
$ alias a-b='a_b'
$ a-b world
hello world
busybox 쉘 (Almquist 쉘)은 함수 이름에서 하이픈을 지원하지 않습니다.
$ a-b() { date; }
-sh: Syntax error: Bad function name
쉘별 하이픈 지원 요약
다음 쉘은 함수 이름에서 하이픈을 지원하는 것으로 알려져 있습니다.
다음 쉘은 함수 이름에서 하이픈을 지원 하지 않는 것으로 알려져 있습니다.
- 재 (busybox), csh, tcsh, 대시
결론
- 하이픈은 비표준입니다. 크로스 셸 호환성을 원하면 멀리하십시오.
- 하이픈 대신 밑줄을 사용하십시오. 밑줄은 모든 곳에서 허용됩니다.
-
그들 안에있는 이름 은 악하다. CSS를보고 있습니다. :)