Cygwin瀏覽器腳本錯誤

Cygwin瀏覽器腳本錯誤

我使用多個瀏覽器,並建立了一個 bash 腳本,用於檢查哪個瀏覽器已打開,並在已開啟的瀏覽器中開啟網頁。我使用 Windows 7,因此我使用 Cygwin 運行此腳本。我透過編輯適當的註冊表項將該腳本設定為預設瀏覽器,因此每當任何程式嘗試開啟網頁時,它都會使用 Cygwin 的「--login」參數呼叫該腳本。該腳本有效 - 頁面會在任何開啟的瀏覽器中載入。但是,每當另一個程式調用該腳本時,我都會收到錯誤訊息:“將命令發送到程式時出現問題。”該腳本有效,但我還是收到了錯誤訊息。只有當腳本被另一個程式呼叫時才會發生這種情況 - 如果我直接從命令列運行腳本,則不會出現錯誤訊息。

我不知道腳本是否有問題,但它是:

#! /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

我嘗試將最後一行更改為“exit 0”,理論上退出狀態存在一些問題,但這沒有效果。

如果在 Cygwin 和/或 Windows 方面更明智的人能夠啟發我,我將非常感激。謝謝!

答案1

我不知道您的原始腳本發生了什麼,但考慮到您運行的是 Windows 7,您可以嘗試使用 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
}

將其保存在擴展名為的文件中.ps1,並以PowerShell -WindowStyle Hidden -ExecutionPolicy Bypass -File Path\To\Script.ps1 %1.

相關內容