当前位置: 首页 > 知识库问答 >
问题:

出口。带特殊字符的信封

公冶鸣
2023-03-14

我使用set-o allexport; source. env; set o allexport从. env文件中导出所有变量。不幸的是,一个变量包含,因此会导致语法错误。有没有用上述命令解决这个问题的方法?我知道可以将其设置在括号中,但是. env在某种程度上是自动生成的,没有括号。

例如,Dotenv看起来像这样:

username=test
password=*fdas_dfar+)mbn

共有2个答案

汪博达
2023-03-14

如果您希望能够提供 .env 源代码,那么它必须是有效的外壳语法。这意味着引用包含壳元字符的值,如 。如果由于文件还需要由其他无法处理引用的程序读取而无法做到这一点,那么您将需要一次读取并解析一行。不要按照旧答案中的建议使用评估eval 命令几乎总是导致比它解决的问题更多的问题。我更喜欢这种方法,而不是使用IFS技巧,因为IFS本身本质上是危险的,应该始终在每个脚本的顶部设置为IFS=$'\n',而不是随后更改:

while read -r line
do
    # Insert appropriate checks for malformed input or comments here.
    key="${line%%=*}"
    val="${line#*=}"
    export "$key"="$val"
done < .env

但是,如果你知道输入格式良好,并且你喜欢危险地生活,那么这也有效:

while IFS='=' read -r key val
do
    export "$key"="$val"
done < .env
莫英喆
2023-03-14
source .env

< code>source是一个shell命令,而< code >。env文件被解析为shell文件。您需要引用您的字符串,就像在shell中一样。

username=test
password='*fdas_dfar+)mbn'

它的优点是,您可以从以下文件运行所有shell命令:

username=$(echo test)
password='*fdas_dfar+)mbn'

或者您可以编写自己的解析器,例如:

while IFS='=' read -r name value; do
       if [ -z "$value" -o -z "$name" ]; then
           echo "Error - unparsable line!" >&2
           exit 1
       fi

       # add quotes around `'`
       value=$(<<<"$value" sed "s/'/'\''/g")
       
       # set the variable value using bash special builtin
       printf -v "$name" "%s" "$value"

 done <.env
 类似资料:
  • 问题内容: 我遇到了一个大问题,即通过jQuery Ajax将数据作为JSON发布到我的服务器。JSLint表示数据正常,并且请求的Content- Type设置为。服务器在PHP 5.2.11上运行,所以我不能使用。 我尝试了url_decode,utf8_decode和html_entities_decode,但似乎没有任何效果。 返回null,但如果执行此操作,一切正常。是发布数据:。 这是

  • 问题内容: 我想删除的特殊字符,如多次出现,,,从我的java字符串由单下划线。我试过了 并且似乎用下划线替换了连续的相同类型的特殊字符,但否则不起作用。例如: 变成 (下划线有2个。)但是应该是。 同样对于失败的情况。我也尝试使用regex并做了一个正则表达式 但这仍然无济于事。我该如何实现? 问题答案: 注意,这是对与第一个捕获组匹配的 内容 的反向引用。要实际匹配字符类中的一个或多个任何字符

  • 问题内容: 我们需要从Typescript中的node.js代码中调用REST API,并希望具有用于请求和响应的相应类型。不幸的是,给定接口的JSON包含以下字段: 我们被告知,这是由于另一端的自动化“ JSONifier”的局限性而无法更改的。我们如何设置适合于此的接口?以下显然不起作用: 问题答案: 就像JS对象一样,您可以用引号将名称引起来,如下所示:

  • 问题内容: 我正在开发一个使用jQuery,PHP和JSON作为响应的依赖选择脚本。 除了使用特殊字符(如法语(é,è,à…))外,其他所有内容都运行良好 如果我像(&eacute;,&egrave;和&agrave;)那样对它们进行预编码(这里我在&符和单词的其余部分之间使用空格以防止在我的问题中进行自动编码)它可以工作,但是当使用jquery渲染字符时不会转换为应具有的外观(é…),而是按原样

  • 代码段 很简单-分配字符串,然后将字符串分配给单元格。 我想做的是告诉“狐狸”这个词,他很大胆。这能做到吗?有特殊的字符序列吗?例如^B,有人知道在哪里可以找到完整的列表吗?文本显然可以是任何东西。。。 谢谢并问候塞恩

  • 关于字符集和替代字形 除键盘上可看到的字符之外,字体中还包括许多字符。根据字体的不同,这些字符可能包括连字、分数字、花饰字、装饰字、序数字、标题和文体替代字、上标和下标字符、变高数字和全高数字。字形是特殊形式的字符。例如,在某些字体中,大写字母 A 有几种形式可用,如花饰字或小型大写字母。 插入替代字形的方式有两种: 可以使用 “字形 ”面板来查看和插入任何字体中的字形。 可以使用 “OpenTy