【发布时间】:2022-10-25 15:55:08
【问题描述】:
我正在使用 shell 脚本创建一个扩展名为 .env 的文件,该文件包含我从 azure key vault 获取的环境变量。 问题是,当我获取密码时,它包含一个特殊字符“%”,该字符被解释为带有以下消息的未知命令: %N: 无效指令
该文件如下所示:
#!/bin/zsh
touch vars.env
printf "PASSWORD=$(az keyvault secret show --name app-PASSWORD --vault-name "my-vault" --query "value";) \n" >>vars.env
以及文件中的结果(仅“%”符号之前的部分):
PASSWORD="bKt39f
问题是如何对其进行转义,以便将整个密码写入文件而不是其中的一部分。
【问题讨论】:
-
用ShellCheck 的话来说:“不要在 printf 格式字符串中使用变量。使用 printf '..%s..' "$foo"。” (more info)