yum 또는 apt의 상태를 확인하는 경우

yum 또는 apt의 상태를 확인하는 경우

Linux 시스템을 자동으로 설정하기 위해 Bash 스크립트를 작성하려고 합니다. 설치된 OS, Ubuntu 또는 CentOS에 따라 다른 작업을 실행하고 싶습니다. 그러나 어떻게든 if 조건이 작동하지 않는 것 같습니다(적어도 CentOS에서는).

if [[ -n "command -v apt-get" ]]; then
  echo "apt-get is used here"

elif [[ -n "command -v yum" ]]; then
  echo "yum is used here"

else
  echo "I have no Idea what im doing here"
fi

CentOS에서는 command -v apt-get내 셸에 아무 것도 반환되지 않지만 스크립트는 여전히 해당 부분을 실행합니다.

내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다.

답변1

command당신은 전혀 실행하지 않습니다. 당신은 사용해야합니다명령 대체실행합니다(즉 $(...), 덜 인기 있는 백틱). 당신이 하는 일은 문자열을 확인하는 것뿐이므로 첫 번째 if진술은 항상 참입니다.

그러나 존재 여부를 확인하기 위해 출력을 확인할 필요는 없습니다 command. 반환 코드를 테스트하는 것만으로도 충분합니다.

#!/bin/bash

if command -v apt-get >/dev/null; then
  echo "apt-get is used here"
elif command -v yum >/dev/null; then
  echo "yum is used here"
else
  echo "I have no Idea what im doing here"
fi

관련 정보