Bash shell变量的名称中可以有空格吗?

Bash shell变量的名称中可以有空格吗?,bash,variables,environment-variables,Bash,Variables,Environment Variables,我想导出一个带有空格的变量名。是否可以在shellexport命令中执行此操作 {'Truststore Filename': '/hom/truststore.jks', 'Truststore Password': 'pass'} 但是我想使用export命令导出变量,因为我们要导出的变量不止一个,而且名称中有空格 然而,以下方法是有效的 $ env 'Truststore Password'=clientpass 'Truststore Filename'=/hom/truststore

我想导出一个带有空格的变量名。是否可以在shell
export
命令中执行此操作

{'Truststore Filename': '/hom/truststore.jks', 'Truststore Password': 'pass'}
但是我想使用
export
命令导出变量,因为我们要导出的变量不止一个,而且名称中有空格

然而,以下方法是有效的

$ env 'Truststore Password'=clientpass 'Truststore Filename'=/hom/truststore.jks python3 script.py

不,这是不可能的,因为:

name

仅由字母、数字和下划线组成的单词,以字母或下划线开头<代码>名称s用作shell变量和函数名。也称为
标识符

env
,正如您所注意到的,游戏遵循不同的规则:

环境变量名称可以为空,并且可以包含任何 “=”和ASCII NUL以外的字符。然而,限制是明智的 您可以选择仅由下划线、数字和ASCII组成的名称 以非数字开头的字母,如shell等应用程序 与其他名称不兼容

(来源:
info'(coreutils)env invocation'
;emphasis mine)


例如,

不是一个有效的标识符,因此,变量名是否可以有空格?请注意,env command workedI建议您从阅读文档开始,不要让其他人读给您听;它是一组包含
=
的字符串。但是,Shell将其pre-
=
部分是有效标识符的环境字符串子集作为变量公开。感谢您提供的信息。除此之外还有别的选择吗?我尝试使用env,它对meLink有效:我添加了一些关于
env
接受什么的信息。它更自由,但它们对于shell来说几乎是不可用的变量。
$ env 'Truststore Password'=clientpass 'Truststore Filename'=/hom/truststore.jks python3 script.py