如何将curl结果作为参数传递

如何将curl结果作为参数传递

我有一个仅返回 IP 地址的网络应用程序。我想将该 IP 结果传递给另一个批处理脚本,该脚本会触发应该连接到该 IP 地址的应用程序。

这是我的测试:

curl http://silvo.uk.to/IPReg.dll/GetIP | bash starttelem2.sh

为了测试,starttelem2.sh 仅包含:

#!/bin/sh
echo "THE IP IS " $1

然而,当我用管道调用上面的curl时,我得到的似乎是curl下载进度。

我怎样才能简单地将curl调用的结果传递给我的bash脚本?

答案1

由于您在脚本中使用了位置参数(参数)1( ),因此请使用命令替换来传递 IP 地址作为第一个参数:$1curl

bash starttelem2.sh "$(curl -s http://silvo.uk.to/IPReg.dll/GetIP)"

$(curl -s http://silvo.uk.to/IPReg.dll/GetIP)就是命令替换,会替换成curl里面命令的标准输出。该-s选项导致curl不在 STDERR 上显示任何进度信息。

请注意,您已将 shebang 用作 ,sh但将脚本作为 的参数运行bash,因为bash是 的超集,如果您没有任何具体原因不这样做,sh您也应该考虑将 shebang 制作为。bash

相关内容