我计划在变量中使用(连字符 -)test-ing=3.0
但我无法打印 value $test-ing
。我知道连字符在 shell 上不起作用,有什么可能的方法可以在不更改变量名称的情况下打印变量值吗?
答案1
假设环境变量test-ing
不是有效的 shell 变量名称,您可以使用printenv
:
% env foo-bar=baz printenv foo-bar
baz
或者 Perl:
% env foo-bar=baz perl -e 'print $ENV{"foo-bar"}'
baz
或者其他工具,比如Python等。
答案2
在里面rc
壳或派生词 ( es
, akanga
),几乎任何内容都可以在变量名中使用。
所有变量也都导出到环境中。
然而,在 Byron Rakitzis 的rc
for Unix 克隆(从中es
/akanga
派生)中,与港口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)
工作,但它们设置的是位置参数,而不是变量。