如何在shell / bash

时间:2017-01-27 20:36:20

标签: bash shell unix sh

我想通过一组数字排序。

一个简单的例子是序列通过2个数字,然后在继续下一个2之前休眠5秒。

例如: 1 2 (睡5秒) 3 4 (睡了5秒)

提前谢谢

3 个答案:

答案 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填写您的号码。