|
发表于 2021-12-20 17:57:33
|
显示全部楼层
本帖最后由 阿奇_o 于 2021-12-20 18:17 编辑
那意思就是:把python的一个列表变成Linux系统的一个环境变量,对吧?
嗯,一开始,我想会比较简单,但实际上比较麻烦,还涉及复杂的线程问题。
- #!/usr/bin/python3
- import os
- # 方法一:不行
- # 方法二:不行
- # 方法三:不行
- # 方法四:当前线程内,可行。
- os.environ['test_var'] = '(a b c)'
- os.system('echo ${test_var}') # 其实是 字符串
- os.system('echo ${test_var[*]}') # 同上
- os.system('echo ${test_var[2]}') # 不是Shell数组;并已是另一线程,test_var已失效。
- print("----当前线程内,定义一个数组,并在当前线程内使用------")
- lis=['a', 'b', 'c', 'd', 'e']
- str_list=' '.join(lis)
- os.system('read -a myArr <<< "%s"; echo ${myArr[*]}; echo ${myArr[2]}'
- % str_list) # 当前线程内,定义一个数组;并使用。
- # 或
- # os.system('export my_env=%s; echo ${my_env[*]}; echo ${my_env[2]}' % ('(' + str_list + ')') )
- os.system('echo ${myArr[2]}') # 另一个线程了,myArr 已无效。
- # 方法五:允许其他线程(全局环境变量),过于繁琐(我就不搞了)
- ……
- # 最后发现是你的需求是不是有问题,为什么要转为Shell的数组呢,这些并不是它擅长的呀。
- # 若真的需要,还是考虑"持久化"吧,或写到一个文件里。
复制代码
|
|