我使用命令尝试了 Unix shell 教程中的不同示例seq
,并在终端中得到了不同的结果。
命令:
seq -s '/' 1 5
结果:
1/2/3/4/5/
代替
1/2/3/4/5
该命令在 online 中按预期工作bash
,只有我的方式不同。
答案1
macOS 上默认安装的非标准实用程序的实现seq
与 GNU 系统上 coreutils 包中的实现不同。苹果系统seq
来自 FreeBSD。
-s
在 macOS 上,用作 选项的选项参数的字符串seq
将替换通常用于此目的的默认换行符。这意味着每个数字后面都跟有 的字符串-s
,包括最后一个数字。要在末尾插入换行符,您可以使用-t '\n'
(该-t
选项在 GNU 中不可用seq
)。请注意,这仍然-s
在最后一个数字后面添加分隔符:
$ seq -s '-->' -t '[end of list]\n' 1 3
1-->2-->3-->[end of list]
在 coreutilsseq
实现中,使用 with 的字符串-s
来分隔数字,但最后一个元素始终以换行符终止。
两种seq
实现的这种差异可能是由于开发人员的偏好和/或需求造成的,但这只是我的猜测。
在 macOS 上,您可以使用 Homebrew 安装 coreutils,并seq
以gseq
.