加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 为什么`for i do cmd中不需要分隔符;完成了

发布时间:2020-12-16 01:19:00 所属栏目:安全 来源:网络整理
导读:参见英文答案 Is a semicolon prohibited after NAME in `for NAME do …`?1个 for i do echo $i; done 这怎么合法? (我希望它能为我写一个额外的分号;做回声$i;完成)它适用于bash,dash,zsh和ksh.标准(我的意思是http://pubs.opengroup.org/onlinepubs/9699
参见英文答案 > Is a semicolon prohibited after NAME in `for NAME do …`?1个
for i do echo $i; done

这怎么合法? (我希望它能为我写一个额外的分号;做回声$i;完成)它适用于bash,dash,zsh和ksh.标准(我的意思是http://pubs.opengroup.org/onlinepubs/9699919799/)规定:

The for loop requires that the reserved words do and done be used to
delimit the sequence of commands.  The format for the for loop is as follows:

    for name [ in [word ... ]]
    do
        compound-list
    done

很明显,当省略“in word”时,do就是一个分隔符.因此暗示似乎是[in [word ..]]之后的分隔符(换行符)实际上属于右侧右括号内.有人能指出标准中的任何理由证明这种(IMO)可怕的滥用语言吗?

如果查看 GNU man page,您会看到循环具有以下语法:
for

    The syntax of the for command is:

    for name [ [in [words …] ] ; ] do commands; done

因此,您可以看到额外的分号是可选部分的一部分.

linux-die man page也是如此.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读