当我使用-0运行seq时,为什么将它视为10? 我已经尝试了两个参数和三个。
praveen@praveen:~$ seq -0
1
2
3
4
5
6
7
8
9
10
seq(GNU coreutils)8.21
答案 0 :(得分:4)
看起来你发现了一个错误http://bugs.gnu.org/17800。那是fixed 2014-06-18。
答案 1 :(得分:2)
比较coreutils 8.23和8.21源代码。
以-
开头且具有全数字的选项:
if (argv[optind][0] == '-'
&& ((optc = argv[optind][1]) == '.' || ISDIGIT (optc)))
{
/* means negative number */
break;
}
但在此之后-
未被考虑在内:
if (seq_fast (s1, s2))
在8.23中,这是固定的:
if (*s1 != '-' && *s2 != '-' && seq_fast (s1, s2))
您可以在FTP上获取coreutils来源:http://ftp.gnu.org/gnu/coreutils/
文件为src/seq.c
答案 2 :(得分:0)
答案更多的是在WTF领域,请让我先解释一下手册页:
SEQ(1)用户命令
NAME
seq - 打印一系列数字
概要
seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
描述
Print numbers from FIRST to LAST, in steps of INCREMENT.
Mandatory arguments to long options are mandatory for short options
too.
-f, --format=FORMAT
use printf style floating-point FORMAT
-s, --separator=STRING
use STRING to separate numbers (default: \n)
-w, --equal-width
equalize width by padding with leading zeroes
--help display this help and exit
--version
output version information and exit
If FIRST or INCREMENT is omitted, it defaults to 1. That is, an
omitted INCREMENT defaults to 1 even when LAST is smaller than FIRST.
The sequence of numbers ends when the sum of the current number and
INCREMENT would become greater than LAST. FIRST, INCREMENT, and LAST
are interpreted as floating point values. INCREMENT is usually
positive if FIRST is smaller than LAST, and INCREMENT is usually
negative if FIRST is greater than LAST. FORMAT must be suitable for
printing one argument of type 'double'; it defaults to %.PRECf if
FIRST, INCREMENT, and LAST are all fixed point decimal numbers with
maximum precision PREC, and to %g otherwise.
现在让我们运行你的命令......
Seq -0
1
2
3
4
5
6
7
8
9
10
...如果你阅读了手册页,你会看到你没有像你期望的那样传递一个参数?如果你尝试
,你传递-0和负0一样seg 0
你不会得到任何东西,因为那......就是这样。现在,如果你想要一些有趣的类型 应该打印-0到15
seg -0 15
-0
-1
-2
-3
-4
-5
-6
-7
-8
-9
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
/0
/1
/2
/3
/4
/5
/6
/7
/8
/9
00
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
所以要回答你的问题,那么,你给它的输入并没有让它产生期望,所以它返回了奇怪的结果。你不能有-0所以如果你尝试-ANY NUMBER,比如-3,你会发现它们什么都没有返回,所以它可能是一个内置函数来返回1-10。