Bash参数扩展分隔符

时间:2013-05-23 17:40:02

标签: bash parameters

我正在尝试使用参数展开1:2:3:4:5:6:7:8:9:10和模式匹配来获取{1..10}

$ var=$(echo {1..10})
$ echo ${var// /:}
1:2:3:4:5:6:7:8:9:10

有没有更优雅的方式(单行)?

3 个答案:

答案 0 :(得分:9)

优雅在旁观者眼中:

( set {1..10} ; IFS=: ; echo "$*" )

答案 1 :(得分:4)

同意@ choroba关于优雅的评论,以下是其他一些可以看到的内容:

# seq is a gnu core utility
seq 1 10 | paste -sd:
# Or:
seq -s: 1 10

# {1..10} is bash-specific
printf "%d\n" {1..10} | paste -sd:

# posix compliant
yes | head -n10 | grep -n . | cut -d: -f1 | paste -sd:

答案 2 :(得分:1)

另一种可能性:

echo {1..9}: 10 | tr -d ' '