変数に(ハイフン - )を使用しようとしていますが、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としてリリースされた後に公開されています)下線以外の2つ以上の文字またはシーケンスが含まれている場合は、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)
同じことが機能しますが、変数ではなく位置パラメータを設定します。