1

2 つの乱数を生成し、それらを追加して、ユーザーに (SUM が > または < 特定の値の場合) -- 続行するかどうかを尋ねる小さなスクリプトがあります。

したがって、スクリプトは次のとおりです。

bash-3.00$ cat use_random.sh
#!/bin/bash

func ()
{
 a=$RANDOM
 b=$RANDOM
 sum=`expr $a + $b`

 echo A = $a
 echo B = $b
 echo
 echo Sum of A + B is : $sum
}

choice=y;
until [ "$choice" == "n" ];
do
 # call func
 echo ---------------------------------------------; echo;
 func;

 echo Sleeping for 3 seconds...
 sleep 3;
 echo -
 echo "IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'"; echo;
 echo -n "Do you want to continue (y/n)? : "; read choice;
 echo ---------------------------------------------; echo;
done

bash-3.00$

スクリプトの実行 std.output のいくつかは次のとおりです

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 20359
B = 15866

Sum of A + B is : 36225
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

bash-3.00$

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 18058
B = 20395

Sum of A + B is : 38453
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

bash-3.00$ bash-3.00$

bash-3.00$ ./use_random.sh
---------------------------------------------

A = 6016
B = 13489

Sum of A + B is : 19505
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 25837
B = 3852

Sum of A + B is : 29689
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 7565
B = 3220

Sum of A + B is : 10785
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : y
---------------------------------------------

---------------------------------------------

A = 32092
B = 22688

Sum of A + B is : 54780
Sleeping for 3 seconds...
-
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'

Do you want to continue (y/n)? : n
---------------------------------------------

bash-3.00$

上記のように、スクリプトを最初の 2 回実行したとき、SUM 値が 3500 未満だったので、「n」を押しました (これは、自動化の必要性のための必須のユーザー プロンプト/入力であり、ここでこの SUM を取得しました私の場合を入力するだけの例とプロンプト)、そしてそれが3500未満だったとき、私は「y」を押しました。SUM 値が 3500 未満になるまでの回数。

さて、ジェンキンスでこれを行うにはどうすればよいですか???

パラメータ化されたビルド プラグインを使用できません (A 変数と B 変数はランダムに生成されるため、ユーザーに渡したくありません)。つまり、スクリプトの呼び出し中に次のトリックは必要ありません。

エコー "入力" | script_or_command
または
script_or_command < file_with_input

次に、続行するためのユーザーの入力 (y または n を押す) は、これら 2 つの確率変数の値の合計に依存します。ユーザーは、最後に「n」を押してスクリプトに出入りする前に、「y」を何回押さなければならないかわかりません。つまり、ユーザーは事前に入力をハードコーディングできます (入力は実行時に依存するため)。注: SUM 値を使用して意思決定を行うのに十分な AI を作成したくありません。続行するためのユーザー入力は、Jenkins で実行したい私の要件です。

Jenkinsでスクリプトを「use_random.sh」と呼ぶ場合に、これを機能させる方法はありますか?

ギガAKS

4

2 に答える 2

0

実際、そのようなスクリプトがほんのわずかである場合、私はあなたに同意します。

しかし、ユーザーからの「ランタイム条件ベース」の入力を求めるスクリプトが数百あります。

例:ユーザーが言うと、何か(5つのファイル/コマンド/など)を毎日異なる順序で実行し、それら(ファイル/コマンド)はプロジェクト/アプリケーションの/のために本質的にランダムです。値を選択して続行する/別のスクリプトを実行する/ssh を 1-N の ssh サーバーに対して実行するかどうかは、そのような要因に依存します。このケースを考えてみましょう: つまり、ファイル/コマンド/アプリケーションが # 4 になるか、次の数日で #13 または 15 になる可能性があるシェル選択の「メニュー」オプションを取得します。したがって、OS の現在の状態に応じてまたはアプリケーションは、私が把握しようとしているものです。要するに、次のとおりです。

他の多くの方法を見る代わりに-Jenkinsジョブを使用してこれを行うことができますが、上記で望んでいたものを正確に実行する簡単で明確な方法はありますか(つまり、Jenkinsはコンソール出力ウィンドウでスクリプトを実行中に「ユーザーの入力」を要求します. .. - Linux/Unix でスクリプトを実行すると、スクリプトと非常によく似ています ($ プロンプト)?
でも返信ありがとう。

于 2013-03-28T17:51:02.710 に答える
0

なんらかの「AI」を使用しない限り、これがあらゆる種類の継続的なテスト システムであるとテストすることはできません。ただし、比較的単純な場合は、最初のスクリプトを呼び出し、SUM の値を抽出し (たとえば、grep を使用)、それに応じて最初のスクリプトに送信される入力を生成する 2 番目のスクリプトを作成するだけです。

于 2013-03-28T17:01:49.137 に答える