쉘의 변수 이름에 (-하이픈)을 사용하는 방법은 무엇입니까?

쉘의 변수 이름에 (-하이픈)을 사용하는 방법은 무엇입니까?

변수에 (하이픈 -)을 사용하려고 하는데 test-ing=3.0값을 인쇄할 수 없습니다 $test-ing. 쉘에서는 하이픈이 작동하지 않는다는 것을 알고 있습니다. 변수 이름을 변경하지 않고 변수 값을 인쇄할 수 있는 방법이 있습니까?

답변1

환경 변수가 test-ing유효한 쉘 변수 이름이 아니라고 가정하면 다음을 사용할 수 있습니다 printenv.

% env foo-bar=baz printenv foo-bar
baz

또는 펄:

% env foo-bar=baz perl -e 'print $ENV{"foo-bar"}'
baz

또는 Python 등의 다른 도구도 있습니다.

답변2

내부에rc껍데기또는 파생어( es, akanga) 등 거의 모든 것을 변수 이름에 사용할 수 있습니다.

모든 변수도 환경으로 내보내집니다.

그러나 Byron Rakitzis의 rcUnix 클론(from es/ akangaderived from) 에서는포트plan9 rc(plan9가 FLOSS로 출시된 이후 공개적으로 사용 가능) 밑줄 이외의 두 개 이상의 문자 또는 시퀀스가 ​​포함된 경우 a-zA-Z0-9_환경에서 내보내거나 가져올 때 인코딩/디코딩을 사용하십시오.

$ rc
; foo-bar = baz
; echo $'foo-bar'
baz
; printenv foo-bar
; env | grep foo
foo__2dbar=baz

Byron에서는 rc이름이 비어 있는 변수를 사용할 수 없습니다.

; '' = 1
rc: zero-length variable name

1 = foo또는 같은 것이 * = (foo bar)작동하지만 변수가 아닌 위치 매개변수를 설정합니다.

관련 정보