在Bash编程中,我正在尝试设置脚本来生成特定链接。随后,我试图让该脚本打开所述链接,如果它不是404. curl
和我的系统上存在其他程序,但显然我无法获得autoopen的链接,而没有明确定义命令,例如firefox [generatedLink]
。我可以用什么来做以下事情:
(1)分析curl
的输出以确定生成的链接是否有效(即不返回404),以及
(2)提示用户是否要在浏览器中打开链接,如果他们说是,打开他们系统上的默认浏览器到该生成的链接?
如果您认为我应该使用其他语言(C ++,Python等),请告诉我。
注意我只希望这在Linux上运行。它不需要是跨平台的。
答案 0 :(得分:1)
如果您使用curl
,请使用I
开关检查服务器的响应标头。
STATUS=`curl -I $URL | head -n 1`
#=> HTTP/1.1 200 OK
根据您的要求,您可以查看状态代码或消息。
STATUS=`curl -I $URL | head -n 1 | awk '{print $NF}'`
if [ $STATUS -eq "OK" ] ; then
echo -n "URL returns an OK message, open browser (Y/n)?"
read -s OKAY_BROWSER
if [ $OKAY_BROWSER -eq "Y" ]; then
...
fi
fi
答案 1 :(得分:1)
if HEAD "${URL}" >/dev/null; then
printf '%s' 'URL ok, open browser? [y/n] '
read -n 1
echo
if [ "${REPLY}" = y ]; then
xdg-open "${URL}"
fi
else
echo 'URL not ok.'
fi
现在简短说明一下:
HEAD
是libwww-perl附带的快速脚本。我用它是因为它很简单。它只是执行HEAD
请求,所以它是轻量级的,如果URL给出了它,它会退出并出错; xdg-open
是一个很好的脚本,可以检测您正在使用的桌面环境,并使用首选应用程序打开URL。换句话说,它会努力确保使用用户选择的浏览器。