1

我有一个小脚本,它生成两个随机数,将它们相加并提示用户(如果 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”,N 否。直到 SUM 值小于 3500 的次数。

现在,詹金斯怎么能做到这一点???

我不能使用参数化构建插件(A 和 B 变量是随机生成的,所以我不希望用户传递它)即,调用脚本时不需要以下技巧:

回声“输入” | script_or_command

script_or_command < file_with_input

其次,用户的继续输入(按 y 或 n)取决于这 2 个随机变量值的总和。用户不知道在最终按“n”进入/退出脚本之前他必须按多少次“y”。换句话说,用户可以提前对输入进行硬编码(因为他的输入取决于运行时)。注意:我不想让 AI 足以使用 SUM 值作为用户输入来做出决策以继续是我想要在 Jenkins 中做的要求。

如果我在 Jenkins 中调用我的脚本“use_random.sh”,有什么想法可以让它工作吗?

千兆AKS

4

2 回答 2

0

实际上,当只有少数这样的脚本时,我会同意你的看法。

但是,我有数百个这样的脚本,它们提示用户输入“基于运行时条件”。

例如:当用户说 - 每天以不同的顺序运行某些东西(5 个文件/命令/等)并且这些东西(文件/命令)本质上是随机的,因为 / 用于项目/应用程序。选择继续/运行另一个脚本/ssh 到 1-N 个 ssh 服务器的值取决于这些因素。考虑这种情况:即,我得到 Shell 选择“菜单”选项,其中文件/命令/应用程序可以在 #4 或在接下来的几天它可以在 #13 或 15。因此,取决于操作系统的当前状态或应用程序是我想要弄清楚的,简而言之是:

而不是看到许多其他方式 - 我们可以使用 Jenkins 作业来做到这一点,是否有任何简单/清晰的方式来运行我上面想要的内容(即 Jenkins 在控制台输出窗口中的脚本运行期间提示“用户输入”。 .. - 非常像脚本一样,当我们在 Linux/Unix $ 提示符下运行它时)?
感谢您的回复。

于 2013-03-28T17:51:02.710 回答
0

除非您使用某种“AI”,否则您将无法测试这是任何类型的连续测试系统。不过,在您的情况下,这应该相对简单——您需要做的就是编写第二个脚本来调用第一个脚本,提取 SUM 的值(例如使用 grep)并相应地生成要发送到第一个脚本的输入。

于 2013-03-28T17:01:49.137 回答