首页 > 解决方案 > zsh:计算命令替换中的行数

问题描述

我想计算$(blah)使用 zsh 而不是管道通过的命令替换生成的行数wc -l。我知道如何将命令替换行转换为数组,如下所示:

blah_output=(${(f)"$(blah)"})

…计算数组中的项目数就是这样:

${#blah_output}

我的问题是:如果没有中间变量,我怎么能在一个表达式中做到这一点?经过一番摆弄,我想出了这个:

${#${(f)"$(blah)"}}

…除非blah只返回一行,否则它会返回该行中的字符数,我不明白为什么或如何解决它。真正的答案是什么?有吗?

子问题:

  1. 创建初始数组时,我不明白为什么需要外括号;我预计拆分将意味着一个数组值。

  2. 我不明白为什么周围的引号$(blah)是必要的;如果我不包括它们,我会得到一个将换行符转换为空格的元素。关于隐式单词拆分然后加入的事情?

标签: zsh

解决方案


推荐阅读