0

我正在使用 lpass-env,它使用 lpass cli 从我的保管库中拉下一个便笺并将它们设置为环境变量。

该注释类似于以下内容:

VARIABLE_WITH_SPACES="abcd 1234"
VARIABLE_WITHOUT_SPACES=abcd1234

当脚本运行以下命令时:

$(lpass show --notes mynote | awk '{ print "export", $0 }')

我得到以下输出:

-bash: export: `1234"': not a valid identifier

所以它不喜欢值中的空格。我怎样才能解决这个问题?

如果你 cat 一个在某些值中有空格的文件,也会发生同样的事情:

$(cat file | awk '{ print "export", $0 }')
-bash: export: `1234"': not a valid identifier
4

1 回答 1

1

分词 shell 扩展只扫描命令替换的结果——命令替换扩展后的引号不是特殊的,而是成为参数的一部分。

您可以(ab-)使用该source命令并传递进程替换:

. <(lpass show --notes mynote | sed 's/^/export /')

或作恶:

eval "$(lpass show --notes mynote | sed 's/^/export /')"
于 2019-11-11T22:57:06.150 回答