변수에 (하이픈 -)을 사용하려고 하는데 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의 rc
Unix 클론(from es
/ akanga
derived 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)
작동하지만 변수가 아닌 위치 매개변수를 설정합니다.