0

在 Bash 编程中,我试图设置一个脚本来生成一个特定的链接。随后,我试图让该脚本打开所述链接,如果它没有 404。 curl并且我的系统上存在其他程序,但显然我无法获得自动打开的链接,除非明确定义命令,例如firefox [generatedLink]. 我可以用什么来执行以下操作:

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

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

注意我只希望它在 Linux 上工作。它不需要是跨平台的。

4

2 回答 2

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。换句话说,它努力确保用户选择的浏览器将被使用。
于 2012-07-30T17:53:02.073 回答
1

如果您 using 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
于 2012-07-30T17:33:45.097 回答