컴퓨터가 ThinkPad인지, 아니면 다음과 같은 것을 사용하고 있지 않은지 확인하려고 합니다.
sudo dmidecode | grep ThinkPad
최종 결과가 true 또는 false(또는 1/0)를 반환하고 싶습니다.
나는 해결책이 다음과 같을 것이라고 생각합니다.
sudo dmidecode | grep -c ThinkPad | test xargs -gt 0
xargs
하지만 여기서는 어떻게 올바르게 사용하는지 잘 모르겠습니다 .
답변1
뒤에 종료 상태 확인을 추가하면 grep
기본적으로 항상 파이프라인의 마지막 명령에서 종료 상태를 가져옵니다.
sudo dmidecode | grep -q ThinkPad; echo $?
종료 상태에만 관심이 있으므로 -q
출력을 억제하는 데 사용합니다 .grep
원하는 경우 명령 그룹화를 사용할 수 있지만 여기서는 다소 중복됩니다.
sudo dmidecode | { grep -q ThinkPad; echo $? ;}
답변2
이것을 검사와 함께 쉘 스크립트를 사용하려면 heemayl이 제안한대로 if
사용하십시오 -q
.
if sudo dmidecode | grep -q Thinkpad
then
echo "I'm a Thinkpad"
fi
if
블록은 명령의 종료 상태를 확인하므로 인쇄 하고 다른 것과 비교하는 grep
대신 의 종료 상태를 직접 사용할 수 있습니다.$?
답변3
에서 영감을 받다희메일의 답변:
sudo dmidecode | grep -q ThinkPad && echo true || echo false
ThinkPad가 grep으로 발견되면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
답변4
sudo dmidecode | grep -c ThinkPad | xargs test 0 -lt
원하는 것을 얻을 수 있으려면 피연산자이므로 xargs
및 명령을 다시 정렬해야 합니다 . test
0이 아닌(>0) ThinkPad 구성 라인이 있는 경우 true 상태를 반환합니다.
또는 테스트 명령의 피연산자 순서를 유지하려면 다음을 수행하십시오.
sudo dmidecode | grep -c ThinkPad | xargs -I \{\} test \{\} -gt 0
그런 다음 두 명령 모두에서 $?
다음과 같이 변수 값을 확인하여 grep의 성공/실패 운명을 결정합니다.
if sudo dmidecode | grep -c ThinkPad | xargs -I \{\} test \{\} -gt 0; then
echo "success hooray!"
else
echo nothing
fi