我有一个仅返回 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 地址作为第一个参数:$1
curl
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