“ Shell命令语言”文档-“令牌识别”部分中的违反直觉的句子

问题描述 投票:0回答:1

在本文档的第2.3节(“令牌识别”)中:https://pubs.opengroup.org/onlinepubs/9699919799.2008edition/utilities/V3_chap02.html出现以下句子:

“如果指示令牌已定界,并且令牌中未包含任何字符,则处理应继续进行,直到确定实际令牌为止”

这是什么意思?在令牌中包含任何字符之前,如何将其标记为定界符?

shell sh posix
1个回答
0
投票

那句话确实模棱两可。改写为“如果令牌为空,则处理将继续进行,直到给出非空令牌为止。”

知道令牌的开始和结束时,令牌被“标记为定界”。因此,从最后一个定界符到新找到的定界符。

如果相邻有两个定界符,则标记可以为空。

例如,说分隔符是逗号。

fashl,gasdf,agasdf,aasdf,,ghask

六个令牌中,第五个令牌为空。它的开始和结束由第四和第五个逗号确定,因此它是“定界的”。但是其中没有字符。


然而,句子的确有歧义。 “处理应继续”未指定空令牌会发生什么。或更确切地说,它没有指定应采取的逻辑动作或路径。所以它可能意味着:

  1. 如果找到一个空标记,请继续阅读直到下一个定界符并认为该标记。

  2. 如果找到空令牌,请忽略该令牌并继续阅读。

尽管这样做的最终效果可能没有什么不同。

© www.soinside.com 2019 - 2024. All rights reserved.