此脚本中执行了相当多的操作,我们将它细分为以下几部分:
第一个实际脚本行——DirectorIEs=(`echo $PATH | column -s ':' -t`)——创建指定目录的数组。您在 zsh 中通过将参数放在括号中来创建数据,例如 directories=(...)。在此例中,数组元素是通过在每个冒号(column -s ':')处分拆 $PATH 以产生空格分隔的目录列表(column 的 -t 参数)来生成的。
对于列表中的每个目录,该脚本尝试枚举该目录中的可执行文件。步骤 3 至步骤 6 描述了该过程。
[[ -d $directory ]] || continue 行是所谓的 short-circuiting 命令的一个示例。short-circuiting 命令在其逻辑条件产生确定的结果时立即终止。
例如,[[ -d $directory ]] || continue 短语使用逻辑“或(||)——它首先执行第一个命令,并且——当且仅当——第一个命令失败时才执行第二个命令。因此,如果 $directory 中的条目存在,并且是一个目录(-d 操作符),则测试成功,求值结束,并且 continue 命令(它跳过当前元素的处理)永远不会执行。
然而,如果第一个测试失败,则会执行该逻辑的下一个条件或执行 continue。(continue 始终成功,因此它通常出现在 short-circuiting 命令的最后)。
基于逻辑“与(&&) 的 Short-circuiting 首先执行第一个命令,并且——当且仅当——第一个命令成功时才执行第二个命令。
pushd 和对应的 popd 分别用于在处理前切换到新目录和在处理后切换到先前的目录。使用目录堆栈是一种理想的脚本技术,用于维持您在文件系统中的位置。
标签: