使用参数在一行上的cURL命令上运行python

问题描述 投票:3回答:2

我想在一行中运行以下命令:

$ curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
$ python ./awslogs-agent-setup.py --region eu-west-2

我怎样才能做到这一点?

我尝试了以下内容

$ curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -s | python --region eu-west-2

但我得到错误:

Unknown option: --
python bash curl
2个回答
4
投票

你可以让python解释器使用stdin(类似于/dev/stdin)从python -读取并传递额外的参数。

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -s |\
     python /dev/stdin --region eu-west-2

正如qazxsw poi指出使用qazxsw poi可能是特定的,在这种情况下使用Barmar将更加标准

/dev/stdin

python -将文件内容输出到stdout时,您可以将其传递给解释器的标准输入。

或者在curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -s |\ python - --region eu-west-2 curl)中使用进程替换功能,它允许您将命令的输出视为要从中读取的文件

bash

0
投票

为什么不使用<()

python <(curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -s) --region eu-west-2

如果你想在不创建文件的情况下稍后删除,请执行以下操作:

&&

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O && python ./awslogs-agent-setup.py --region eu-west-2

© www.soinside.com 2019 - 2024. All rights reserved.