ユーザー入力で順次処理を実行する[閉じる]

ユーザー入力で順次処理を実行する[閉じる]
#!/usr/bin/env bash
tt=0
one(){
    echo "Please enter some input: "
    read input_variable
    echo "You entered: $input_variable"
    tt=$input_variable
}
tho(){
    if $tt >0; then
    {
        for i in {1..100000}
        do
          echo $i $i
          sleep 2s
        done
    }
    fi
}
(one ; tho) &

これは私がしたいことの小さな例です。ユーザーが入力を提供し、tho()実行を開始するのに時間がかかります。tho()ユーザーが入力変数を提供した後(おそらく2日後)に実行したいと思います。どんな提案でもいいでしょう!

ベストアンサー1

ユーザー入力を読み取る部分はフォアグラウンドで実行する必要があります。フォアグラウンドプロセスのみが端末からデータを読み取ることができます。

if条件の構文は意味がありません。$tt >0名前が変数¹にあるコマンドを実行し、ttその出力を名前付きコマンドにリダイレクトします0。数値を比較するには、[ … ]条件式構文または((…))算術式構文を使用します。

if 文中括弧は役に立たない。then … fi同じグループがすでに作成されています。

{1..100000}100,000語に拡張して1つずつ処理します。ループを100,000回実行するには、ループカウンタを使用してください。

2秒ごとに1行を印刷するのは私には理解できませんが、あなたが何をしたいのか分からないのでそのままにします。

#!/bin/bash
one () {
    echo "Please enter some input: "
    read tt
    echo "You entered: $tt"
}
tho () {
    if [ "$tt" -gt 0 ]; then
        for ((i=0; i<=100000; i++)); do
          echo $i $i
          sleep 2s
        done
    fi
}
one
tho

thoこのセクションをバックグラウンドで実行するには、&後で追加してくださいtho

おそらく

おすすめ記事