gpt4 book ai didi

bash - 变量值用单引号引起来

转载 作者:行者123 更新时间:2023-12-03 05:36:01 30 4
gpt4 key购买 nike

我正在 GitLab CI 中编写一个管道,并且在 GitLab 的全局变量中定义了多个变量...其中一个包含各种特殊字符,需要用单引号包含这些特殊字符才能成功进行身份验证(使用硬编码值进行测试) )。

因此,我在 GitLab 中定义的变量是 DEV_ARM_CLIENT_SECRET 并且它包含类似以下内容: JSBDbshe66!#12$@a - 然后我将此变量导出到需要它的管道阶段如下所示:export ARM_CLIENT_SECRET=$DEV_ARM_CLIENT_SECRET

我尝试简单地在该变量周围添加双引号和单引号,但这不起作用 - 如前所述,当在命令行上使用硬编码值手动尝试此操作时,它仅适用于单引号。我什至尝试使用 \'$DEV_ARM_CLIENT_SECRET\' 但无济于事。

对此的任何帮助将不胜感激。

干杯。

最佳答案

与所有其他命令一样,对变量的赋值也将由 shell 进行解析。为了防止 shell 解析特殊字符,必须使用“引号”。单个字符可以用反斜杠 (\) 括起来,多个字符可以用单引号 (') 或双引号 (") 括起来。单引号内的每个字符都将按字面意思处理。双引号字符大多按字面意思处理,主要异常(exception)(以及其他一些异常(exception)):变量将被其内容替换。

要在命令行中分配值“JSBDbshe66!#12$@a”,由于 bang (!) 符号,它必须用单引号引起来(有关详细信息,请参阅 bash bang):

:~$ DEV_ARM_CLIENT_SECRET='JSBDbshe66!#12$@a'

命令

:~$ echo $DEV_ARM_CLIENT_SECRET

为您提供所需的输出:

JSBDbshe66!#12$@a

要将此值复制到另一个变量,只需在命令行中输入:

ARM_CLIENT_SECRET=$DEV_ARM_CLIENT_SECRET

或者您可以输入:

ARM_CLIENT_SECRET="$DEV_ARM_CLIENT_SECRET"

收到相同的结果。双引号之间的变量名称将替换为值,最后 shell 会删除引号。如果将变量名称放在单引号之间

ARM_CLIENT_SECRET='$DEV_ARM_CLIENT_SECRET'

引号之间的每个字符都将按字面意思处理:

:~$ echo $ARM_CLIENT_SECRET

$DEV_ARM_CLIENT_SECRET

如果您通过反斜杠引用单引号

:~$ ARM_CLIENT_SECRET=\'$DEV_ARM_CLIENT_SECRET\'

“$ARM_CLIENT_SECRET”的值将与 $DEV_ARM_CLIENT_SECRET 相同,并带有额外的前导和尾随单引号:

:~$ echo $ARM_CLIENT_SECRET

'JSBDbshe66!#12$@a'

关于bash - 变量值用单引号引起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62532365/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com