If statement sh可执行if-else语句
如果可执行文件输出某个字符串,如何使用sh脚本进行测试?我用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)
/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
。dorunCount=$(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