msysgit:Git bash错过了`seq`命令。还有其他选择吗?

时间:2012-11-28 16:46:10

标签: shell msysgit seq gnu-coreutils

我在模拟shell脚本中经常使用seq。 Git bash没有提供它,因此我正在寻找替代方案。

Git bash支持的命令是否有seq替代?

当前解决方案:根据Ignacio的回答,我编写了一个小帮助程序脚本,为我的旧脚本提供了一个简单的seq函数。我还注意到,在将echo {1..10}与变量一起使用时,您需要使用eval来获取序列输出而不是未展开的表达式:

a=0; b=5
eval echo {$a..$b}  # outputs 0 1 2 4 5
echo {$a..$b}       # outputs {0..5}

这是我的新seq.sh

#!/bin/bash
# check for the real seq and export a new seq if not found
# import this script via `source ./seq.sh`
#
hasSeq(){
  which seq >/devnull 2>&1
}

mySeq(){
    case $# in
        1) eval echo {1..$1};;
        2) eval echo {$1..$2};;
        3) echo "seq(3) not supported" 1>&2;;
    esac
}

if ! hasSeq; then
    seq(){
        mySeq $*
    }
fi

hasSeq || export -f seq

1 个答案:

答案 0 :(得分:5)

假设bash的版本足够新,你可以使用大括号扩展。

$ echo {1..16}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

或...... you know...