我想通过一组数字排序。
一个简单的例子是序列通过2个数字,然后在继续下一个2之前休眠5秒。
例如: 1 2 (睡5秒) 3 4 (睡了5秒)
提前谢谢
答案 0 :(得分:1)
您可以在bash中使用此for
循环:
for ((i=1; i<10; i+=2)); do echo $i $((i+1)); sleep 5; done
1 2
3 4
5 6
7 8
9 10
答案 1 :(得分:0)
您也可以使用模运算符%
执行此操作:
declare -i max_value=10 # set it whatever you want
for ((i = 1; i < $max_value; i++)); do
printf "Number is: $i\n"
[[ $(( $i % 2 )) == 0 ]] && printf "Sleeping\n" && sleep 5 # sleep when the number is even
# do whatever...
done
输出:
Number is: 1
Number is: 2
Sleeping
Number is: 3
Number is: 4
Sleeping
Number is: 5
Number is: 6
Sleeping
Number is: 7
Number is: 8
Sleeping
Number is: 9
答案 2 :(得分:0)
如果你的数字集不是像anubhava's response这样的一组简单的升序整数,你可以做类似的事情。
例如,如果您的序列在列表中,list.txt
:
declare -ai a=($(<list.txt)); ## Read the sequence from list.txt into a
declare -i i l=${#a[@]};
for ((i=0; i<l; i+=2)); do
echo ${a[i]} ${a[i+1]};
sleep 5;
done;
如果您的序列号码在字符串中,例如s='1,2,3,4,5,6,4,32,25,4,6,4'
,则可以declare -ai a=(${s//,/ })
用a
填写您的号码。