Erro de script do navegador Cygwin

1

Eu uso vários navegadores e criei um script bash que verifica se o navegador está aberto e abre páginas da Web em qualquer navegador que já esteja aberto. Eu uso o Windows 7, então eu corro este script usando o Cygwin. Eu defino o script como o navegador padrão, editando as entradas de registro apropriadas, assim, sempre que qualquer programa tenta abrir uma página da web, ele chama esse script usando o parâmetro "--login" do Cygwin. O script funciona - as páginas são carregadas em qualquer navegador que esteja aberto. No entanto, sempre que o script é chamado por outro programa, recebo a mensagem de erro "Ocorreu um problema ao enviar o comando para o programa". O script funciona, mas recebo a mensagem de erro de qualquer maneira. Isso só acontece quando o script é chamado por outro programa - não há mensagem de erro se eu executar o script diretamente da linha de comando.

Eu não sei se o script está errado, mas aqui está:

#! /bin/bash

if ps -W | grep -v grep | grep waterfox.exe >/dev/null
    then
        "/cygdrive/c/Program Files/Waterfox/waterfox.exe" -requestPending -osint -url "$1"
    elif ps -W | grep -v grep | grep firefox.exe >/dev/null
    then
        "/cygdrive/c/Program Files (x86)/Mozilla Firefox/firefox.exe" -requestPending -osint -url "$1"
    elif ps -W | grep -v grep | grep chrome.exe >/dev/null
    then
        "/cygdrive/c/Users/Morgan/AppData/Local/Google/Chrome/Application/chrome.exe" -- "$1"
    else
        cygstart "/cygdrive/c/Program Files/Waterfox/waterfox.exe" -requestPending -osint -url "$1"
fi
exit

Eu tentei mudar a última linha para "sair 0" com base na teoria de que houve algum problema com o status de saída, mas isso não teve efeito.

Eu realmente apreciaria se alguém mais sábio nos modos de Cygwin e / ou Windows pudesse me esclarecer. Obrigado!

    
por Morgan May 10.01.2013 / 11:59

1 resposta

1

Não sei o que está acontecendo com seu script original, mas, considerando que você está executando o Windows 7, tente usar o Windows PowerShell:

Param([string] $Url)


function Count-Process ([string] $Name) {
    return (Get-Process -Name $Name -ErrorAction SilentlyContinue).Count
}

function Invoke-Browser ([string] $Url) {
    if ((Count-Process waterfox) -gt 0) {
        & "C:\Program Files\Waterfox\waterfox.exe" -requestPending -osint -url $Url
    } elseif ((Count-Process firefox) -gt 0) {
        & "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" -requestPending -osint -url $Url
    } elseif ((Count-Process chrome) -gt 0) {
        & "${Env:LocalAppData}\Google\Chrome\Application\chrome.exe" -- $Url
    } else {
        & "C:\Program Files\Waterfox\waterfox.exe" -requestPending -osint -url $Url
    }
}


if ($MyInvocation.InvocationName -ne '.') {
    Invoke-Browser $Url
}

Salve isso em um arquivo com extensão .ps1 e chame-o com PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1 .

    
por 10.01.2013 / 12:47