将变量从python传递给shell脚本

时间:2013-03-14 06:22:41

标签: python bash shell wxpython wxwidgets

HI伙计们我是脚本新手,我在python和wxpython做小项目,它做自动化。现在我在将变量从python发送到shell脚本时遇到了问题。 我必须连接ftp,然后下载用BASH编写的文件(第一个脚本)。该bash脚本再调用一个bash脚本(第二个脚本),该脚本也在ftp服务器中。但是第一个脚本中的2脚本名称没有硬编码。所以我必须从我的python脚本发送“脚本名称”,这是我现在无法做到的。 所以我需要你的帮助解决我的问题,已经通过谷歌,但找不到任何东西。

提前致谢。

我已经尝试过直接运行它,但它仍然没有采取第二个参数,所以我已经完成了一次脚本。发现了,

当第一个脚本中已经配置$ 2 $ 3 $ 7时(那些是在myproject.sh中构建的)

请帮我解决这个问题..

2 个答案:

答案 0 :(得分:1)

最快捷,最简单的方法是让您的Python脚本创建一个使用bash语法设置变量名称的文件,然后让您的第一个bash脚本获取它。采购它将基本上设置该变量。

因此在Python中,您希望在某处输出该文件:

name_of_script="/path/to/second/script.sh"

with open("/my/path/scriptnamevar.sh", "w") as f:
    #Output to bash-recognized variable setting syntax
    f.write("SCRIPT_NAME={}".format(name_of_script))

然后在您的第一个脚本中,您只需要获取scriptnamevar.sh(或您决定调用它的任何内容)。

source /my/path/scriptnamevar.sh

# This should output whatever name_of_script was in python
echo $SCRIPT_NAME 

答案 1 :(得分:0)

您可以使用命令行参数。由于您使用子进程来调用第一个bash脚本,因此您可以将其修改为如下所示:

subprocess.call(["bashScript1Name", "bashScript2Name"])

然后在bashScript1Name中,第二个脚本的名称将在变量$ 1