通过os.system将变量从python传递到bash shell脚本

通过os.system将变量从python传递到bash shell脚本,python,bash,Python,Bash,在下面的代码中,我构造了一个变量$probe1,然后将其传递给bash脚本。在下面的示例中,输出为空,即os.system调用中的bash shell脚本无法识别$probe1。需要做什么 for line1 in datfile: datmat=datmat+[line1.rstrip('\n').split('\t')] probe=datmat[i][0] snp1=datmat[i][2] probe1='permprobes'+probe

在下面的代码中,我构造了一个变量$probe1,然后将其传递给bash脚本。在下面的示例中,输出为空,即os.system调用中的bash shell脚本无法识别$probe1。需要做什么

for line1 in datfile:
    datmat=datmat+[line1.rstrip('\n').split('\t')]
        probe=datmat[i][0]
        snp1=datmat[i][2]
    probe1='permprobes'+probe+'pheno.pphe'
    os.system('echo $probe1')
probe1是一个python变量,而不是shell变量

os.environ['probe1'] = probe1

将bash环境变量设置为python变量内容。但是,一旦python脚本退出,环境变量就会消失。

似乎这就是您要做的:

In [2]: os.environ['probe1'] = 'hello'

In [3]: os.system('echo $probe1')
hello

但是我不知道您为什么要这样做…

probe1='…'
设置一个Python变量。它与Bash没有任何联系。是否有某种方法将变量从python传递到Bash shell?这本质上是我的问题。为什么需要这样做?我正在使用python提取一些变量名,然后需要将这些变量名作为参数传递给从bash脚本执行的程序。因此,我需要将字符串$probe1导出到bashshell(我只是使用echo作为一个简单的示例来说明这个问题),但是为什么需要变量呢?为什么不直接引用参数并将其传递给脚本呢?我知道,我的问题是如何将python变量传递给bash shell。我正在使用python从数据文件中提取一些变量名,然后需要将这些变量名传递给bash shell脚本以在另一个程序中运行。echo的示例只是一个“玩具”脚本,用于说明将变量从python移动到bash shell中的问题。@user1815498也许您可以使用
管道来实现这一点:无论如何,您提出的os.environ[]解决方案解决了我的问题。感谢您提供管道参考,当我需要将多个变量从python传递到shell时,它会派上用场。
In [2]: os.environ['probe1'] = 'hello'

In [3]: os.system('echo $probe1')
hello