use*_*531 35 php linux environment-variables symfony dotenv
例如,Symfony 的configuration-environment-variables-in-env-files 文档提供了示例:
DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
DB_USER=root
Run Code Online (Sandbox Code Playgroud)
为什么第一个示例使用引号(又名括号)而不是第二个示例?
如果适用的答案取决于解析 .env 文件的应用程序,请基于 Symfony。
jiw*_*ene 58
TL;DR 解决方案:当字符串包含空格或某些特殊字符和某些语法时,请使用引号。这些包括:
\n空格和其他空白,
\n反斜杠(转义空格,换行符 \xe2\x80\x93\\ 即使在不带引号的字符串中也给出空格),
引号(但可以组合多个引号mark\\ \'styles like\'"this"),
井号 ( #) 标记注释的开始(如果不在引号字符串或 中$(\xe2\x80\xa6)),
美元符号(用于扩展变量 \xe2\x80\x93 见下文),
\n括号 ((和)) \xe2\x80\x93 取决于上下文,
shell 重定向字符(>、<、2>等|),
星号 ( *) 和问号 ( ?),因为它用于 glob,
方括号(因为它们列出字符),
\n逗号分隔的文本{\xe2\x80\xa6}(因为它提供了文本 \xe2\x80\x93{foo,bar}baz扩展为 的多种变体foobaz barbaz),
也许其他人,
\n当然,还有换行符。
\n.env根据您链接的页面,文件是常规bash脚本。这意味着:
一个字符串不能包含多个单词(空格分隔的部分),除非用引号引起来。\xc2\xb9
\nFOO_VAR=\'multiple words\' # This works.\nANOTHER_VAR="foo bar" # This works, too.\n\nBAR_VAR=this does not work # Executes \xe2\x80\x9cdoes\xe2\x80\x9d with args\n # \xe2\x80\x9cnot work\xe2\x80\x9d and variable\n # BAR_VAR=\xe2\x80\x9cthis\xe2\x80\x9d.\nRun Code Online (Sandbox Code Playgroud)\n如果文本用双引号引起来或未用任何引号引起来,则执行变量扩展。
\nmy_var=42\nVARIABLES="foo ${my_var}" # Gives \xe2\x80\x9cfoo 42\xe2\x80\x9d.\nRun Code Online (Sandbox Code Playgroud)\n可以执行 Shell 命令来生成字符串。\xc2\xb2
\nCURRENT_DATE="$(date)" # Executes \xe2\x80\x9cdate\xe2\x80\x9d and uses its\n # stdout as the value.\nDO_NOT_DO_THIS=$(date) # First expands the command, and we\n # then get multiple unquoted words.\nAVOID_THIS="`date`" # Non-standard syntax, accepted by bash.\nRun Code Online (Sandbox Code Playgroud)\n\xc2\xb9 在另一种情况下,它将使用给定变量将第二个及以后的所有 \xe2\x80\x9cwords\xe2\x80\x9d 作为 shell 命令运行。请参阅bash(1)联机帮助页。
\xc2\xb2 根据文档,Microsoft\xc2\xa0Windows 不支持它。它没有提及 Windows 上的变量扩展语法。
\n| 归档时间: |
|
| 查看次数: |
32161 次 |
| 最近记录: |