0

Bashプログラミングでは、特定のリンクを生成するスクリプトを設定しようとしています。続いて、404がない場合、そのスクリプトで上記のリンクを開こうとしてい curlます。システムに他のプログラムが存在しますが、などのコマンドを明示的に定義しないと、自動オープンへのリンクを取得できないようfirefox [generatedLink]です。次のことを行うために何を使用できますか?

(1)の出力を分析してcurl、生成されたリンクが有効かどうか(つまり、404を返さないかどうか)を判断し、
(2)ブラウザーでリンクを開くかどうかをユーザーに確認し、「はい」と答えた場合は、その生成されたリンクへのシステム上のデフォルトのブラウザ?

他の言語(C ++、Pythonなど)でこれを行う必要があると思われる場合は、お知らせください。

注これをLinuxでのみ機能させたい。クロスプラットフォームである必要はありません。

4

2 に答える 2

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
于 2012-07-30T17:33:45.097 に答える
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. HEADlibwww-perlに付属しているクイックスクリプトです。それは簡単なので、私はそれを使用しました。リクエストを実行するだけなHEADので軽量で、URLがリクエストを提供するとエラーで終了します。
  2. ここでは、質問の部分はそれほど重要ではありません。これは、多くのソリューションの1つにすぎません。
  3. xdg-openは、使用しているデスクトップ環境を検出し、そこで優先アプリケーションを使用してURLを開く優れたスクリプトです。つまり、ユーザーが選択したブラウザが確実に使用されるようにすることです。
于 2012-07-30T17:53:02.073 に答える