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
답변1
#!/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
'를 사용하는 것이 좋습니다 ( 변경해야 하는 형식 으로 출력 제공 ).--format=freeze
package==1.2.3
${packages%% *}
${packages%==*}