首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >何时需要.env文件中的引号?

何时需要.env文件中的引号?
EN

Stack Overflow用户
提问于 2022-03-19 13:59:32
回答 1查看 5.8K关注 0票数 1

例如,Symfony的文档提供了一些示例:

代码语言:javascript
运行
复制
DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/db_name"
DB_USER=root

为什么在第一个例子中使用引号(也称为括号)而不是第二个例子?

如果适用的答案取决于应用程序解析.env文件,请以Symfony为基础。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-19 14:00:52

TL;DR解决方案:当字符串包含空格或某些特殊字符和特定语法时,使用引号。其中包括:

  • 空间和其他空格,
  • 反斜杠(转义空格和换行符- \即使在未引号的字符串中也会给出空间),
  • 引号(但可以组合多个引号mark\ 'styles like'"this"),
  • 标记注释开始的庞德符号(#) (如果它不在引号字符串或$(…)中),
  • 美元符号(用于展开变量-见下文),
  • 括号(()) -取决于上下文,
  • 壳重定向字符(><2>|等)
  • 星号(*)和问号(?),因为它用于全局,
  • 方括号(因为它们列出了字符),
  • {…}中以逗号分隔的文本(因为它提供了文本的多个变体- {foo,bar}baz扩展到foobaz barbaz),
  • 也许其他人,
  • 当然还有新线路。

.env文件,根据你所链接的网页的说法,是普通的bash脚本。这意味着:

  • 一个字符串不能包含多个单词(空格分隔部分),除非它是用引号括起来的。 FOO_VAR=‘多个单词’#这是可行的。ANOTHER_VAR="foo bar“#这也有效。BAR_VAR=this不工作# Executes“not”,args #“not”,变量#BAR_VAR=“this”。
  • 如果文本以双引号括起来,或者不包含在任何引号中,则执行变量展开。 my_var=42 VARIABLES="foo ${my_var}“#给出”foo 42“。
  • 可以执行Shell命令来生成字符串。 CURRENT_DATE="$(date)“# Executes”date“并使用其# stdout作为值。DO_NOT_DO_THIS=$(date) #首先展开命令,然后得到多个未引用的单词。AVOID_THIS="date“#非标准语法,由bash接受。

在另一种情况下,它将以shell命令的形式使用给定的变量运行第二个和后面所有的“单词”。请参阅bash(1)手册。

根据文档,微软的Windows不支持它。它没有提到任何关于Windows上的变量扩展语法。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71538752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档