首页 > 解决方案 > shell 变量的名称可以包含空格吗?

问题描述

我想导出一个带空格的变量名。在shellexport命令中可以吗?

{'Truststore Filename': '/hom/truststore.jks', 'Truststore Password': 'pass'}
$ export 'Truststore Password'=clientpass
-bash: export: `Truststore Password=clientpass': not a valid identifier

但我想使用export命令导出变量,因为我们要导出的变量不止一个,名称中有空格。

但是,以下方式有效。

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

标签: bashvariablesenvironment-variables

解决方案


不,这是不可能的,因为bash 中的变量不能具有包含空格的名称

name

仅由字母、数字和下划线组成并以字母或下划线开头的单词。Names 用作 shell 变量和函数名。也称为identifier.

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

环境变量名称可以为空,并且可以包含除“=”和 ASCII NUL 之外的任何字符。但是,明智的做法是限制自己使用仅由下划线、数字和 ASCII 字母组成且以非数字开头的名称,因为像 shell 这样的应用程序不适用于其他名称

(来源:info '(coreutils) env invocation';强调我的)

举个例子,这是另一篇文章,其中回答了使用空格获取环境变量的输出是多么痛苦


推荐阅读