Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
If statement sh可执行if-else语句_If Statement_Sh_Counter_Executable - Fatal编程技术网

If statement sh可执行if-else语句

If statement sh可执行if-else语句,if-statement,sh,counter,executable,If Statement,Sh,Counter,Executable,如果可执行文件输出某个字符串,如何使用sh脚本进行测试?我用/program运行可执行文件,它会打印到控制台hello或再见。我想运行它1000次,并计算每个输出出现的次数 #!/bin/sh count=0 secs=60 # Set interval (duration) in seconds. endTime=$(( $(date +%s) + secs )) # Calculate end time. while [ $(date +%s)

如果可执行文件输出某个字符串,如何使用sh脚本进行测试?我用
/program
运行可执行文件,它会打印到控制台
hello
再见
。我想运行它1000次,并计算每个输出出现的次数

#!/bin/sh
count=0
secs=60                        # Set interval (duration) in seconds.
endTime=$(( $(date +%s) + secs )) # Calculate end time.

while [ $(date +%s) -lt $endTime ]; do  # Loop until interval has elapsed.
    if [[ ./program = *hello* ]]; then
        count++
    fi
done
编辑(根据给出的答案部分固定):

编辑

试一试

原版

你很接近。为什么不使用未经认可的
案例
语句呢

#!/bin/sh
count=0
secs=60                        # Set interval (duration) in seconds.
endTime=$(( $(date +%s) + secs )) # Calculate end time.

while [ $(date +%s) -lt $endTime ]; do  # Loop until interval has elapsed.
  case $(./program) in
      *hello* )((helloCnt++)) ;;
      *goodbye* ) ((goodbyeCnt++)) ;;
  esac
done
echo "hellos=$helloCnt    goodByes=$goodbyCnt"
我想不出一个简单的方法来代替
/program
,所以我无法测试它

如果你得到错误的MSG,让我知道

此外,如果您的目标是尽可能快地运行此循环,那么使用循环计数器将消除对
$(date+%s)
的相对昂贵的调用来驱动循环。i、 e

 for (i=0;i<1000;i++) ; do
     case $(./program) in
         ...
     esac
 done

for(i=0;我至少要编辑你的Q来显示你打算如何运行程序1000次。祝你好运。我真的需要运行它一分钟,我只是想简化问题。我将用代码编辑。
((totalCnt++)
好吗?;-)祝你好运在你的问题中,
编辑:
部分的意义是什么?如果这是对@SHEENT的回应,请添加一条注释来解释为什么它会出现(或者干脆删除第一个副本)。啊,仍然在学习编写一个可用的规范。好的;-)。。让我做一些测试。我很确定我们可以逃逸
[1]
s。也就是说,
\[1\]\[1\]
。var++需要在
$((var++)
中,或者如果shell calcs正在使用
var
,请留在
((var++)
中。见我的编辑上面。祝你好运。你能切换到
#吗/bin/bash
(或
#!/bin/ksh
)?我已经用
++
语法编辑了
#/bin/sh
。do
runCount=$(expr$runCount+1)
。Tnx。很高兴这有帮助。祝你好运
#!/bin/sh
count=0
secs=60                        # Set interval (duration) in seconds.
endTime=$(( $(date +%s) + secs )) # Calculate end time.

while [ $(date +%s) -lt $endTime ]; do  # Loop until interval has elapsed.
  case $(./program) in
      *hello* )((helloCnt++)) ;;
      *goodbye* ) ((goodbyeCnt++)) ;;
  esac
done
echo "hellos=$helloCnt    goodByes=$goodbyCnt"
 for (i=0;i<1000;i++) ; do
     case $(./program) in
         ...
     esac
 done