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