3

入力を20秒間待つ必要があります。その後、myscriptは実行を続行する必要があります。
私は使ってみましたがread -t20 var、これはbashでのみ機能します。Solaris10でkshを使用しています。

誰かが私を助けてくれますか?

編集:20秒はほんの一例です。1時間待つ必要があるとしましょう。しかし、男は入力を書き込むためにPCの前にいることができた、またはできなかった場合、入力を入力するために1時間待つ必要はありませんが、PCの前にいない場合は、シェルは待機後に実行を続行する必要がありますしばらくの間。

ありがとう!

4

2 に答える 2

2

差出人man ksh

TMOUT
ゼロより大きい値に設定されている場合、PS1プロンプトを発行してから所定の秒数以内にコマンドが入力されないと、シェルは終了します。シェルは、この値の上限を超えてコンパイルすることはできません。

これがSolarisreadで機能するかどうかはわかりません。kshksh93で動作しますが、そのバージョンにはもありますread -t

このスクリプトには、次のアプローチが含まれています。

# Start the (potentially blocking) read process in the background

    (read -p && print "$REPLY" > "$Tmp") &  readpid=$!

    # Now start a "watchdog" process that will kill the reader after
    # some time:

    (
        sleep 2; kill $readpid >/dev/null 2>&1 ||
        { sleep 1; kill -1 $readpid >/dev/null 2>&1; } ||
        { sleep 1; kill -9 $readpid; }
    ) &     watchdogpid=$!

    # Now wait for the reading process to terminate. It will terminate
    # reliably, either because the read terminated, or because the
    # "watchdog" process made it terminate.

    wait $readpid

    # Now stop the watchdog:

    kill -9 $watchdogpid >/dev/null 2>&1

    REPLY=TERMINATED            # Assume the worst
    [[ -s $Tmp ]] && read < "$Tmp"
于 2010-09-24T15:09:43.747 に答える
1

このフォーラムのスレッドを見てください。3番目の投稿に答えがあります。

于 2010-09-24T11:24:00.250 に答える