有没有更有效的方法在 zsh 中执行以下操作?
我想可能有办法摆脱中间数组参数a
和/或b
.
该脚本从命令中获取一些输出。如果该输出不为空,它会跳过前两行,然后将剩余每一行第一个空格之前的文本用作另一个命令的参数。
#!/usr/bin/env zsh
packages=$(pip3 list -o)
if [[ -n ${packages} ]]; then
print "${packages}"
a=("${(f)packages}")
b=("${a[@]:2}")
PYTHONWARNINGS=ignore:DEPRECATION pip3 install -U "${b[@]%% *}"
fi
会更短,更像zsh,但我怀疑它会更快。
您可能希望使用
pip
's--format=freeze
来避免剥离标题(以package==1.2.3
您需要将其更改为的格式${packages%% *}
提供输出${packages%==*}
)。