如何导出点分隔的环境变量

Pet*_*iuk 9 unix macos bash

执行

user@EWD-MacBook-Pro:~$ export property.name=property.value
Run Code Online (Sandbox Code Playgroud)

给我

-bash: export: `property.name=property.value': not a valid identifier
Run Code Online (Sandbox Code Playgroud)

是否可以在其中包含点的系统属性?如果是这样的话怎么样?

Adr*_*onk 17

正如其他人所说的那样,bash不允许这样做,所以你必须使用自己喜欢的脚本语言来完成它.例如,在Perl中:

perl -e '$ENV{"property.name"} = "property.value"; system "bash"'
Run Code Online (Sandbox Code Playgroud)

这将启动带有property.name环境变量集的子shell bash ,但您仍然无法从bash访问该环境变量(尽管您的程序将能够看到它).

编辑:@MarkEdgar评论说env命令也可以工作:

 env 'property.name=property.value' bash # start a subshell, or
 env 'property.name=property.value' command arg1 arg2 ...   # Run your command
Run Code Online (Sandbox Code Playgroud)

像往常一样,如果需要保护shell中的特殊字符或者想要在属性名称或值中包含空格,则只需要引号.