8

我正在尝试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

有没有更优雅的方式(单线)来做到这一点?

4

3 回答 3

10

优雅在旁观者的眼中:

( set {1..10} ; IFS=: ; echo "$*" )
于 2013-05-23T17:49:25.377 回答
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:
于 2013-05-23T18:07:58.787 回答
1

另一种可能:

echo {1..9}: 10 | tr -d ' '
于 2013-05-23T18:09:24.560 回答