参照ファイルからトークンを抽出する

参照ファイルからトークンを抽出する

スクリプトを作成していますが、参照ファイルからサーバー名とポートの詳細を取得する必要があるスクリプト部分があります。

詳細を取得するために次のロジックを使用しましたが、より良いオプションを探しています。アドバイスしてください。

HOST=$(grep SERVER_NAME $HOME/env.ref | awk -F '=' '{print $2}')
PORT=$(grep SERVER_PORT $HOME/env.ref | awk -F '=' '{print $2}')

if [ "${HOST}" -a "{PORT}" ]
then
echo "Details extracted"
else
echo "Details not found"
fi

ベストアンサー1

  1. grepをawkにパイプする必要はありません。この試み:

    HOST="$(awk -F= '/SERVER_NAME/ {print $2}' $HOME/env.ref)"
    PORT="$(awk -F= '/SERVER_PORT/ {print $2}' $HOME/env.ref)"
    
  2. a)1行を無駄にせずにb)句をインデントすると、thenif / then / elseが読みやすくなります。また、{...}あいまいさがない限り、周辺変数を使用する必要はありません。たとえば、$HOSTPORT$ HOSTPORTという単一の変数があり、${HOST}${PORT}2つの変数が互いに何もなしに連結されています。最後に、あなたは$忘れてしまいました$PORT

    if [ "$HOST" -a "$PORT" ] ; then 
      echo "Details extracted"
    else
      echo "Details not found"
    fi
    

    あなたが望むものが見つかったものと見つからないものをエコーすることであれば、1行にすることができます。

    [ "$HOST" -a "$PORT" ] && echo "Details extracted" || echo "Details not found"
    

スクリプトには改善できる部分はあまりありません。十分ではありません。スクリプトの残りの部分が何をしているかに応じて、内容全体をawk、Perl、Pythonなどで書く方が良いかもしれませんが、説明や大きなスクリプトの例がなければわかりません。

おすすめ記事