dpkg-query
링크 된 게시물에서와 같이 사용 가능한 Python 라이브러리를 사용하여 이러한 스크립팅 컨텍스트에서 APT 시스템에 직접 바인딩하는 것을 제외하고는 작업에 가장 적합한 도구 인 것처럼 보입니다.
로 dpkg-query
:
dpkg-query -Wf'${db:Status-abbrev}' package-name 2>/dev/null | grep -q '^i'
0
패키지가 설치된 경우 true ( 셸 스크립트의 종료 상태 1
)를 반환하고, 그렇지 않으면 false (종료 상태 )를 반환합니다.
-W
"표시"를 의미 dpkg-query
합니다 ( 요청 된 조치가 있어야 함).
-f
출력 형식을 변경합니다.
db:Status-abbrev
패키지 상태의 짧은 형식입니다.
2>/dev/null
dpkg-query
유효하지 않은 패키지 이름이 제공되면 침묵 합니다. 이 문제를 처리하는 방법은 사례마다 다를 수 있습니다.
grep -q
일치하는 것이 있으면 true를, 그렇지 않으면 false를 반환합니다.
자주 사용하는 경우 간단한 기능으로 만들 수 있습니다.
#!/bin/sh
debInst() {
dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'
}
if debInst "$1"; then
printf 'Why yes, the package %s _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package %s is not currently installed.\n' "$1"
fi
아니면 그냥
#!/bin/sh
if dpkg-query -Wf'${db:Status-abbrev}' "$1" 2>/dev/null | grep -q '^i'; then
printf 'Why yes, the package "%s" _is_ installed!\n' "$1"
else
printf 'I regret to inform you that the package "%s" is not currently installed.\n' "$1"
fi
dpkg-query -l "$package" | grep -q ^.i
일반적으로 충분하고 기억하기 쉽다는 것을 알았습니다 .