使用lastpassbash脚本导出值中有空格的环境变量时,收到"不是有效标识符"



我使用的是lpass-env,它使用lpass-cli从我的vault中提取一个注释,并将它们设置为环境变量。

注释看起来类似于此:

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

分词外壳扩展只扫描命令替换的结果-命令替换扩展后的引号并不特殊,而是参数的一部分。

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

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

或者邪恶:

eval "$(lpass show --notes mynote | sed 's/^/export /')"

相关内容

最新更新