Bash AWKまたはIFステートメント

Bash AWKまたはIFステートメント

変数の数を調べて、出力を生成するスクリプトを作成しようとしています。つまり、pingを使用し、ttyに基づいてLinuxまたはWindowsを実行していることを確認します。仕事は複雑すぎるかもしれませんが、これは私が得たものです。

#!/bin/bash
var1=$(ping $1 -c 1) | awk '{if("$var1"=="128") print "Host is LIVE Running: Windows OS"}'

出力を生成しません。 awkを使わずにIF文を使ってみましたが、接続できないとわかっているIPを入力すると出力は生成されません。

#!/bin/bash
var1=$(ping $1 -c 1)
if [[ "$var1" == *"128"* ]]; then
echo "Host is LIVE Running: Windows OS"
elif [[ "$var1" == *"64"* ]]; then
echo "Host is LIVE Running: Linux OS"
elif [[ "$var1" == *"Unreachable"* ]]; then
echo "Host appears DOWN!"
fi

建設的な批判を歓迎します!ありがとうございます。

ベストアンサー1

awk環境で変数を使用するには、変数を設定する必要があります。このように:

var1=$(ping $1 -c 1) ; awk -v var2=$var1 '{if(var2 == 128)....

数値を比較するときは、bash次のものを使用する必要があります。

if [[ "$var1" -eq *"128"* ]]; then...

=文字列の場合とAFAIKのbash両方を使用できます。これは同じ意味です(から)。===if

おすすめ記事