首页 > 解决方案 > 从 python 运行 bash 脚本时自动回答 Python 运行的批处理脚本的输入提示

问题描述

我有一个批处理文件,它是data.sh. 所以我正在使用 python 运行它

和 data.sh 代码是这样的

configure()
{
    read -p '--> Enter  key ID: ' key_id
    read -p '--> Enter  secret key: ' secret_key

    echo "$key_id"
    echo "$secret_key"
}

我正在运行这样的东西

import subprocess

rc = subprocess.call("data.sh")

我想使用 python 代码传递这两个 pass key_id 和 secret_key。我怎么能做到这一点?

标签: pythonpython-3.xbash

解决方案


就像 MattDMo 在评论中所说的那样,configure不使用任何命令行参数。如果您将其更改为使用命令行参数($1是第一个命令行参数,$2是第二个等...),您可以更改subprocess.call()函数调用以使用参数列表。列表中传递的第一个参数将是可执行文件,其他参数将作为命令行参数传递给可执行文件。请参阅此处的 subprocess.call 文档。有一个很好的例子ls,使用命令行 arg 调用可执行文件-l。您不需要使用任何破折号(就像-l在 ls 示例中一样),您可以将密钥 id 作为第一个参数传递,并将密钥作为第二个参数传递。这将如下所示:

Python:

rc = subprocess.call(["data.sh", key_id, secret_key])

贝壳:

configure()
{
    key_id=$1
    secret_key=$2
    echo "$key_id"
    echo "$secret_key"
}

推荐阅读