bash - 使用 lastpass bash 脚本导出带有空格的环境变量时,收到“不是有效的标识符”
问题描述
我正在使用 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
解决方案
分词 shell 扩展只扫描命令替换的结果——命令替换扩展后的引号不是特殊的,而是成为参数的一部分。
您可以(ab-)使用该source
命令并传递进程替换:
. <(lpass show --notes mynote | sed 's/^/export /')
或作恶:
eval "$(lpass show --notes mynote | sed 's/^/export /')"
推荐阅读
- javascript - 节点错误,无法设置 localhost 来测试 React 应用程序**已解决** .env 文件
- html - 如何从Angular9的两个不同选项卡中打开的两个不同组件更新单个数组?
- sql - 将 T SQL 中存在重叠的持续时间相加
- laravel - 启动 php-worker 容器时出错(laradock lite)
- excel - 在vba中用逗号替换点它不起作用
- flutter - Flutter 在时间执行函数
- angular -
属性变换:Covid 数据跟踪器图例的 D3 图例中的预期数字“translate(NaN,NaN)” - python - Python Pulp 线性规划约束
- python - 导入语句不一致
- python - 我的 switch case 系统无法在 Python 中运行