新しいコマンドが機能するようにするには、コマンドの応答にどのように従いますか?

新しいコマンドが機能するようにするには、コマンドの応答にどのように従いますか?

正しいバージョンのデーモンをインストールするいくつかのスクリプトを試してテストしていますが、まずコードで実際に実行されていることを確認し、デーモンのバージョンを確認したいと思います(それは強制的にダウンロードされ更新されます)。でも始まるやいなや詰まってしまいました。

#!/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

おすすめ記事