![시스템이 특정 버전의 systemd 및 glib를 사용하고 있는지 쉘 스크립트에서 어떻게 확인할 수 있습니까? [복사]](https://linux55.com/image/95363/%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%B4%20%ED%8A%B9%EC%A0%95%20%EB%B2%84%EC%A0%84%EC%9D%98%20systemd%20%EB%B0%8F%20glib%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EA%B3%A0%20%EC%9E%88%EB%8A%94%EC%A7%80%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
systemd 및 glibc 버전 2.17을 사용하여 시스템을 식별한 다음 특정 코드 세트를 실행하려고 합니다. 이것이 내가 얻은 것이지만 오류가 발생합니다
./testing.sh: line 4: [[UNIT: command not found
암호:
#!/bin/sh
glib=`ldd --version | awk '/ldd/{print $NF}'`
ver=2.17
if [[`systemctl`=~-\.mount && $glib '==' $ver ]];then
echo "I have to execute certain specific stuff to glib ver 2.17"
fi
답변1
두 가지 테스트 양식을 사용했으므로 [[ ]]
다음과 같습니다.세게 때리다(또는 ksh)이므로 다음과 같습니다.
#!/bin/bash
glib=$(ldd --version | awk '/ldd/{print $NF}')
if [[ $glib == 2.17 ]] && systemctl | grep -q '\.mount'; then
echo "I have to execute certain specific stuff to glib ver 2.17"
fi
노트
- 현대 쉘에는 사용되지
$( )
않습니다 . [[
안과 주변에 공간을 두다]]
- 정규식 시도가 가장 잘 작동합니다grep