lifayi2008 发表于 2014-07-02 18:09
我看是你的逻辑思维才需要恶补,每个人有每个人的学习方式,这本书中虽然没有清楚说明:n自动打印,而-n抑制这样的自动打印,但是原文中也没有任何错误之处。绝不是你说的自以为是的菜鸟的言论
……只不过应用于下一行的命令不会从top开始,而是从n命令后面的命令开始
但也无法证明 n 会改变控制流。
case 'n':
no_default_output = true; # 当设置-n参数时,no_default_output 为true, 这个很重要,用于execut.c中命令 n 的执行控制,如下面的引用
break;
case 'n':
if (!no_default_output) # 如果-n设置,此条件为假,不执行,这也就是为什么sed -n n,没有输出的原因
output_line(line.active, line.length, line.chomped, &output_file);
if (test_eof(input) || !read_pattern_space(input, vec, false))
return -1;
break;
case 'p':
output_line(line.active, line.length, line.chomped, &output_file); # 注意 命令p是不受no_default_output控制的
break;
if (!no_default_output) # 此处为全局的判断,即所有命令执行结束之后(t,b等有branch功能的命令除外),判断是否执行print,即auto-print功能
output_line(line.active, line.length, line.chomped, &output_file);
return -1;
46.79 KB, 下载次数: 3
8.63 KB, 下载次数: 2
case 'n':
if (!no_default_output) # 如果-n设置,此条件为假,不执行,这也就是为什么sed -n n,没有输出的原因
output_line(line.active, line.length, line.chomped, &output_file);
if (test_eof(input) || !read_pattern_space(input, vec, false))
return -1;
break;
case 'p':
output_line(line.active, line.length, line.chomped, &output_file); # 注意 命令p是不受no_default_output控制的
break;
if (!no_default_output) # 此处为全局的判断,即所有命令执行结束之后(t,b等有branch功能的命令除外),判断是否执行print,即auto-print功能
output_line(line.active, line.length, line.chomped, &output_file);
return -1;
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |