1

Mac OS X (X.5 から X.8) マシンで使用している bash スクリプトがあります。「OK」を押してスクリプトを続行するか、「スヌーズ」を押してスクリプトをスヌーズさせるかを尋ねるダイアログ状況です。その部分は機能しています。

しかし、私はスクリプトをテストしていて、すぐにどちらのボタンも押すことができず、1、2 分後に (時間を計りませんでした)、スクリプトは残りのプロセスを続行し、ダイアログが画面に表示されたままになりました。

スクリプトはユーザー入力を待たなければならないという印象を受けましたか?

問題のスクリプトの一部:

osascript -e 'アプリ「Finder」にアクティベートを指示'

リターン=osascript -e 'tell app "Finder" to display dialog "Text goes here. Please select OK or Snooze" buttons {"OK", "Snooze"} default button 1 with title "Text Here" with icon caution'

    ############  BEGIN LOOP HERE  ##############

while [ "$return" == "button returned:Snooze" ]

        do
        Runs every 4 hours
        sleep 14400
        osascript -e 'tell app "Finder" to activate'
        return=`osascript -e 'tell app "Finder" to display dialog "Text goes here. Please select OK or Snooze" buttons {"OK", "Snooze"} default button 1 with title "Text Here" with icon 2'`

終わり

###### ここでループを終了
    if [ "$return" == "button returned:OK" ]
        then
                    run the installer script here
            fi
4

2 に答える 2

1

return ステートメントの右側全体を逆引用符で囲んでみてください。これにより、osascript が実行され、"return" がそのプログラムによって返された文字列に設定されます。

return=`osascript -e 'tell app "Finder" to display dialog "Text goes here. Please select OK or Snooze" buttons {"OK", "Snooze"} default button 1 with title "Text Here" with icon caution'`

それ以外の場合は、'=' の右側の文字列に戻ります。

于 2012-09-24T17:25:42.617 に答える