0

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

提前致谢。

我已经尝试直接运行它,但它仍然不需要第二个参数,所以我已经完成了一次脚本。发现,

当 $2 $3 $7 已经在第一个脚本中配置时(这些在 myproject.sh 中内置)

请帮我解决这个问题..

4

2 回答 2

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))

然后在你的第一个脚本中,你只需要 source scriptnamevar.sh (或者你决定调用它的任何东西)。

source /my/path/scriptnamevar.sh

# This should output whatever name_of_script was in python
echo $SCRIPT_NAME 
于 2013-03-14T06:28:50.677 回答
0

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

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

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

于 2013-03-14T06:36:21.093 回答