创建脚本以生成链接,然后分析有效性,然后在系统上的默认浏览器中打开

时间:2012-07-30 17:24:06

标签: linux shell

在Bash编程中,我正在尝试设置脚本来生成特定链接。随后,我试图让该脚本打开所述链接,如果它不是404. curl和我的系统上存在其他程序,但显然我无法获得autoopen的链接,而没有明确定义命令,例如firefox [generatedLink]。我可以用什么来做以下事情:

(1)分析curl的输出以确定生成的链接是否有效(即不返回404),以及
(2)提示用户是否要在浏览器中打开链接,如果他们说是,打开他们系统上的默认浏览器到该生成的链接?

如果您认为我应该使用其他语言(C ++,Python等),请告诉我。

注意我只希望这在Linux上运行。它不需要是跨平台的。

2 个答案:

答案 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

现在简短说明一下:

  1. HEAD是libwww-perl附带的快速脚本。我用它是因为它很简单。它只是执行HEAD请求,所以它是轻量级的,如果URL给出了它,它会退出并出错;
  2. 问题部分在这里并不重要。这只是众多解决方案中的一种;
  3. xdg-open是一个很好的脚本,可以检测您正在使用的桌面环境,并使用首选应用程序打开URL。换句话说,它会努力确保使用用户选择的浏览器。