#!/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
。
おそらく。