我有两个文件名trigger.sh和emp.py在LocalDB文件夹。
在trigger.sh我有
export emp_code='IT'
py /C/Users/LocalDB/emp.py
字符串
在emp.py
import os
from os import listdir
from os.path import is filed,join
_emp_code=os.environ['emp_code']
Emp_url = {
'IT':{'Emp_url':'www.it.com'},
'Prod':{'Emp_url':'www.prod.com'},
'Qa':{'Emp_url':'www.qa.com'}
}[_emp_code]
Print(Emp_url)
型
当我触发trigger.sh时,我的输出“"*'Emp_url':'www.it.com'**".
现在,我试图在Shell脚本中有这些网址。但我得到一个“无效的标识符”。
下面的代码我已经尝试过:Trigger.sh
export emp_code='IT'
export _emp_url= '
'IT':{'Emp_url':'www.it.com'},
'Prod':{'Emp_url':'www.prod.com'},
'Qa':{'Emp_url':'www.qa.com'}'
py /C/Users/LocalDB/emp.py
型
emp.py:
import os
from os import listdir
from os.path import is filed,join
_emp_code=os.environ['emp_code']
Emp_url = os.environ ['_emp_url']
Emp_url = {Emp_url}[_emp_code]
Print(Emp_url)
型
有什么办法解决这个问题吗
1条答案
按热度按时间zc0qhyus1#
现在,我试图在Shell脚本中有这些网址。但我得到一个“无效的标识符”。
当您尝试使用不是有效的shell变量名的字符串执行
export
时,通常会显示此错误消息。shell不希望shell变量名、=
符号和所分配的值之间有空格。export
行上空格之后的任何内容都应该是另一个有效的shell变量名,可能后跟=
以进行值分配。在脚本Trigger.sh中,第一行看起来是正确的;第二行是错误的。在第二行中,
=
之后有一个空格,这使得shell需要一个shell变量名(“标识符”),但接下来是一个字符串,其中包含许多标识符中不允许的字符(多个:
,{
,}
和换行符)。在emp.py中,此行
字符串
错了,
is
这个词不应该在这里。型
在这一行之后:
型
Emp_url
只包含字符串,而不是dict
。所以,在这一行:
型
{Emp_url}
创建了一个set
,其中包含一个包含整个字符串的条目,然后尝试用_emp_code
(另一个字符串)索引它将失败。Emp_url中的字符串需要转换为
dict
,然后才能用字符串索引。一种方法是使用json
包:型
为此,环境变量
_emp_url
应该包含双引号,而不是单引号。也要只打印URL:型
在Trigger.sh:
所以现在Trigger.sh可以有这样的内容:
型
和emp.py可以有这样的东西
型
尝试一下:
型