if else 문의 경우 cat 출력

if else 문의 경우 cat 출력
os_version=$(cat /etc/issue |grep Ubuntu)
if $os_version
then
echo found
else
echo notfound
fi

Ubuntu 컴퓨터에서 시도하면 ./test: line 2: Ubuntu: command notfound notfound가 표시됩니다.

이것은 나에게 효과적이지만 변수에 할당하고 싶습니다.

if cat /etc/issue |grep Ubuntu
then
echo found
else
echo notfound
fi

답변1

성명서 if에는 다음과 같은 내용이 기재되어 있습니다.주문하다, 종료 상태를 확인하세요. $os_version이를 명령으로 사용하는 방법은 이를 확장하고 결과 명령줄을 실행하는 것입니다. 따라서 변수에 가 포함되어 있으면 인수 등 으로 호출된 명령을 Ubuntu 18.04.1 LTS \n \l실행하려고 시도합니다 .Ubuntu18.04.1LTS

당신은 사용하고 싶을 수도 있습니다

if [ -n "$os_version" ]; then
    ...
fi

변수가 비어 있는지 확인합니다( [ -n "$var" ]비어 있지 않으면 true, [ -z "$var" ]변수가 비어 있으면 true).

또는 편집에서와 같이 명령문 자체에서 이를 사용 grep하고 거기에 변수를 설정할 수 있습니다.if

distro=unknown
if grep -q Ubuntu < /etc/issue; then
    distro=ubuntu
fi
# ... later
if [ "$distro" = ubuntu ]; then
    # do something Ubuntu-specific
fi

답변2

grep -q Ubuntu /etc/issue && echo found || echo not found

관련 정보