从 bash 输出中隐藏变量应用程序结果
我正在尝试创建一个脚本,该脚本将运行 wget 到一些站点,并检查我们是否从该站点收到 200 OK。
我的问题是 wget 应用程序的结果显示在标准输出中。有什么办法可以隐藏这个吗?
我当前的脚本是:
RESULT=`wget -O wget.tmp http://mysite.com 2>&1`
稍后我将使用正则表达式来查找我们从 wget 产生的错误中收到的 200 OK。 当我运行脚本时,它工作正常,但我得到了在 echo 之间添加 wget 的结果。
有什么办法解决这个问题吗?
I am trying to create a script that will run wget to a few sites and check if we receive a 200 OK from the site.
My problem is that the result of wget application is shown in the stdout. Is there a way I can hide this.
My current script is:
RESULT=`wget -O wget.tmp http://mysite.com 2>&1`
Later I will use regex to look for the 200 OK we receive from the errout that wget produces.
When I run the script, it works fine, but I get the result of the wget added between my echos.
Any way around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
杰克的建议很好。我会稍微修改它们。
如果您只需要检查状态代码,请使用 Jack 引用的
--spider
选项。来自文档:Jack 的第二个建议展示了隐藏输出背后的核心思想:
上面将标准输出重定向到
/dev/null
。然后2>&1
将标准错误重定向到当前的标准输出文件描述符,该描述符已经被重定向到/dev/null
,所以它不会给你任何输出。但是,由于您不需要输出,因此您可以使用
--quiet
选项。来自文档:所以,我可能会使用以下命令
Jack's suggestions are good. I'd modify them just slightly.
If you only need to check the status code, use the
--spider
option that Jack referenced. From the docs:And Jack's second suggestion shows the core ideas behind hiding output:
The above redirects standard output to
/dev/null
. The2>&1
then redirects standard error to the current standard output file descriptor, which has already been redirected to/dev/null
, so it won't give you any output.But, since you don't want output, you might be able to use the
--quiet
option. From the docs:So, I'd probably use the following command
您可以使用:
这也可以解决问题:
玩了一下并想出了一个:
除了“200”之外什么也不输出 - 没有别的。
You can use:
And this does the trick too:
Played around a little and came up with that one:
This outputs nothing but "200" - Nothing else.