为啥将 python 命令分配给 sh var?这个文件有啥作用? [关闭]

Posted

技术标签:

【中文标题】为啥将 python 命令分配给 sh var?这个文件有啥作用? [关闭]【英文标题】:why assign python command to sh var? what does this file do? [closed]为什么将 python 命令分配给 sh var?这个文件有什么作用? [关闭] 【发布时间】:2021-09-29 12:57:09 【问题描述】: 有人知道这个 .sh 文件的最后一行是做什么的吗? 为什么要用 python 命令将 var 赋值给自身?

python文件(bigquery库)如何获取json文件名?

DAY=2021-01-01
GOOGLE_APPLICATION_CREDENTIALS=file.json
GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS python3 run_calc_bq.py table_name $DAY $DAY

谢谢你:)

【问题讨论】:

调试和使事情一步到位后的剩余物 对我来说,看起来GOOGLE_APPLICATION_CREDENTIALS 变量在 sh 文件中的某处使用。老实说,我无法解释任何事情,因为我需要完整的代码,抱歉。 【参考方案1】:

它在 Python 命令的环境中设置 GOOGLE_APPLICATION_CREDENTIALS 的值,而不是在 shell 本身中。重复变量名有点奇怪。如果您可以将变量添加到 all 命令的环境中,您可以编写

DAY=2021-01-01
export GOOGLE_APPLICATION_CREDENTIALS=file.json
python3 run_calc_bq.py table_name "$DAY" "$DAY"

如果您确实只希望在 Python 命令的环境中使用它,则可以使用更短的变量名。

DAY=2021-01-01
x=file.json
GOOGLE_APPLICATION_CREDENTIALS=$x python3 run_calc_bq.py table_name "$DAY" "$DAY"

【讨论】:

【参考方案2】:

变量GOOGLE_APPLICATION_CREDENTIALS在父脚本中声明,但没有导出

为了使其对子脚本可用,您有两种选择:

导出

# export to all child processes
export GOOGLE_APPLICATION_CREDENTIALS

或将其添加到命令行

# export to this specific command
GOOGLE_APPLICATION_CREDENTIALS=$GOOGLE_APPLICATION_CREDENTIALS python3 ...

【讨论】:

谢谢你,有道理:)

以上是关于为啥将 python 命令分配给 sh var?这个文件有啥作用? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

为啥直接将 Arrays.asList() 分配给 var 时会出现 AssertionError?

当我调用 JsonConvert.DeserializeObject() 时,为啥将 JArray 分配给 var 失败?

Python:使用 vars() 将字符串分配给变量

简单的 Python 问题:为啥我不能将变量分配给排序列表(就地)? [复制]

当我将一个字典分配给另一个变量时,为啥 Python 会同时更新两个字典? [复制]

如何将当前 var 分配给 else 语句以便能够比较 var 值,然后将其保存以获得结果?