如何在 shell 中的变量名中使用 (- 连字符)?

如何在 shell 中的变量名中使用 (- 连字符)?

我计划在变量中使用(连字符 -)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 的rcfor 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)工作,但它们设置的是位置参数,而不是变量。

相关内容