bash - 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
解决方案
不,这是不可能的,因为bash 中的变量不能具有包含空格的名称:
name
仅由字母、数字和下划线组成并以字母或下划线开头的单词。
Name
s 用作 shell 变量和函数名。也称为identifier
.
env
,正如您所注意到的,游戏规则不同:
环境变量名称可以为空,并且可以包含除“=”和 ASCII NUL 之外的任何字符。但是,明智的做法是限制自己使用仅由下划线、数字和 ASCII 字母组成且以非数字开头的名称,因为像 shell 这样的应用程序不适用于其他名称。
(来源:info '(coreutils) env invocation'
;强调我的)
推荐阅读
- django - Django,将两个外键添加到同一个模型
- django - django 中的用户登录视图无法正常工作?
- javascript - 使用 setTimeOut 再次调用 setState 来响应更改状态
- elasticsearch - 安装聚合插件(离线)Logstash
- java - WireMock 有时表现得很奇怪
- sql - 从 SQL Table(par1, par2, value) 创建 Par1 x Par2 UI 表视图
- android - 3D 模型未在 Android 设备上加载
- python - SqlAlchemy 中的查询对象是不可变的吗?
- excel - 当从另一个模块/子调用子时,应用程序警报/警告不会被抑制
- web - 网站错误社交媒体链接“拒绝连接”