如何在 WHILE-DO bash 命令中运行命令

问题描述 投票:0回答:1

我试图在等待时间变化的循环中运行 echo 。以下命令已经做到了这一点

/bin/sh -c 'trap exit TERM; while :; do echo test; sleep 10 ; done;'"

但是,我不希望它一直是 10 秒,我希望它是 1 到 10 之间的随机数。为了生成 1 到 10 之间的随机数,我构造了以下

$> min=1 && max=10
$> echo $(($RANDOM%($max-$min+1)+$min))

现在,我的问题是,如何将其结合起来。例如,我尝试了以下

$> /bin/sh -c 'trap exit TERM; while :; do echo test; sleep $(($RANDOM%($max-$min+1)+$min)) ; done;'"

但这会产生错误

/bin/sh: -c: line 0: syntax error near unexpected token `('
/bin/sh: -c: line 0: `trap exit TERM; while :; do echo test; min=1 && max=10 && sleep $RANDOM%($max-$min+1)+$min ; done;

有什么建议如何将两者结合起来吗?或者如果有更好的方法,我也洗耳恭听!!

linux bash command-line-interface
1个回答
0
投票

您可以将随机数分配给 var,然后将其用于

sleep
:

/bin/sh -c '
trap exit TERM; 
t=$(($RANDOM%(10-1+1)+1)); 
echo  "random time: $t"; 
while :; do echo test; sleep $t ; done;'
random time: 6
test
test
© www.soinside.com 2019 - 2024. All rights reserved.