새 명령이 작동하도록 하려면 명령의 응답을 어떻게 따르나요?

새 명령이 작동하도록 하려면 명령의 응답을 어떻게 따르나요?

올바른 버전의 데몬을 설치하는 일부 스크립트를 시도하고 테스트하고 있지만 먼저 코드에서 실제로 실행 중인지 확인하고 데몬의 버전을 확인하고 싶습니다(그러면 강제로 다운로드 및 업데이트됩니다). 하지만 시작하자마자 막혔어요.

#!/bin/bash

RED='\033[0;91m'
GREEN='\033[1;32m'
YELLOW='\033[1;33m'
NC='\033[0m'`

#Checking Server status
/usr/local/bin/evos-cli getinfo
if [[ "/usr/local/bin/evos-cli getinfo" = "error: couldn't connect to server" ]];
then
    echo -e "${GREEN}I will start Evos server then i check for version... ${NC}"
    evosd
    sleep 10s 
else
    echo -e "${GREEN} Server is running i check for the version soon! ${NC}"
    sleep 2s
fi

#Version Checking
/usr/local/bin/evos-cli --version
if [[ "/usr/local/bin/evos-cli --version" = "Evos Core RPC client version v1.1.3.0-2ba4298" ]];
then
    echo -e "${GREEN} Version of wallet is correct! ${NC}"
else
    echo -e "${YELLOW} Version of wallet is Incorrect! ${NC}"
fi

#Checked Status
sleep 3s
echo -e "${YELLOW} Status Checked! ${NC}"

데몬에는 많은 명령이 있으며 서버가 중지된 상태에서 명령을 입력하면 "오류: 서버에 연결할 수 없습니다"라는 메시지가 표시됩니다. 따라서 else"오류: 서버에 연결할 수 없습니다"가 작동할 때 옵션을 트리거 하고 싶습니다. 발생하지 않습니다. 서버가 트리거 명령을 중지하더라도 else명령은 서버 프로세스 시작을 건너뛰고 서버가 실행 중이라고 말합니다. else버전 검사기는 버전이 제공된 명령과 일치하더라도 옵션을 실행합니다. 이 코드를 사용하면 올바른 버전이 실행됩니다. (하지만 코드에는 올바른 내용이 있으므로 쓸모가 없습니다.)

/usr/local/bin/evos-cli --version
if [ "/usr/local/bin/evos-cli --version Evos Core RPC client version v1.1.3.0-2ba4298" ]; 
then
    echo -e "${GREEN} Version of wallet is correct! ${NC}"
else
    echo -e "${YELLOW} Version of wallet is Incorrect! ${NC}"
fi

#Checked Status
sleep 3s
echo -e "${YELLOW} Status Checked! ${NC}"

evos-cli getinfo, 또는 /usr/local/bin/evos-cli getinfo터미널에서 명령을 트리거하는 방법의 예입니다.

다양한 변형을 시도했지만 알아낼 수 없습니다.

답변1

테스트 중

if [[ "/usr/local/bin/evos-cli getinfo" = "error: couldn't connect to server" ]];

비교하고 싶은 것 같군요산출/usr/local/bin/evos-cli getinfo문자열 에 . 너 뭐야아마도이 특정 테스트에서 수행하려는 작업은 명령이 성공했는지 테스트하는 것입니다.

이건 지나갈 거야

if /usr/local/bin/evos-cli getinfo >/dev/null 2>&1; then
    # this worked
else
    # the command failed
fi

명령의 출력을 비교하려면 명령 대체를 사용하십시오.

if [ "$(/usr/local/bin/evos-cli --version)" = "Evos Core RPC client version v1.1.3.0-2ba4298" ]; then
    # version was the expected string
else
    # we got an unknown version
fi

또는 문자열의 첫 번째 부분만 일치시키려면 bash,

if [[ "$(/usr/local/bin/evos-cli --version)" == "Evos Core RPC client version v1.1.3.0"* ]]; then
    # version was the expected string
else
    # we got an unknown version
fi

관련 정보