python - 从 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。我怎么能做到这一点?
解决方案
就像 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"
}
推荐阅读
- amazon-web-services - Cognito 用户组可以用于无服务器应用程序中的动态组吗?
- angular - Angular,DragnDrop 问题,本地存储
- json - 在 GO 中反序列化一个非标准的 json
- javascript - 带有 useContext 的 UseState 不会触发重新渲染
- java - 在多个对象数组中捕获特定对象
- php - 尝试使用文本框上传多个文件,但在提交时,表单名称、日期文本没有价值
- python - 尝试将 Json 输出存储为变量以传递给字典
- go - 如何从 Go 中的 nslookup 获取“名称”?
- c - 通过 go 模块的内存地址从 .so 文件调用 C 函数。(cgo)
- python - 比较来自 2 个数据帧的差异列