Shell-Script
更高效的 zsh 字元串解析/數組處理
有沒有更有效的方法在 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
#!/usr/bin/env zsh packages=(${${(f)"$(pip3 list -o)"}[3,-1]}) || exit if (($#packages)); then print -rl -- $packages PYTHONWARNINGS=ignore:DEPRECATION pip3 install -U ${packages%% *} fi
會更短,更像zsh,但我懷疑它會更快。
您可能希望使用
pip
’s--format=freeze
來避免剝離標題(以package==1.2.3
您需要將其更改為的格式${packages%% *}
提供輸出${packages%==*}
)。