ifステートメントを使用して2%の値を比較します。

ifステートメントを使用して2%の値を比較します。

まず、私はここに初めて来たので、間違いがあった場合は申し訳ありません。これが私の最初の質問です。

Linuxベースの製品のログファイルをコピーするスクリプトを作成しています。コピー部分は完了しましたが、ログをコピーする前にスクリプトで/ varパーティションのサイズを確認するようにしたいと思います。

以下は、エラーを発生させるスクリプトの一部です。

/ varパーティションのサイズが80%未満の場合はログをコピーし、それ以外の場合は終了する必要があります。

size=`df -kh | grep var | awk '{print $5}'` #output is 1%, so it must execute other statements.

echo var partion $size utilized

if (( "$size" <= 79% ))

then

        echo "/var partition is less than 80%"

else

exit

        echo "/var partition is more than 79%"

fi

スクリプト出力

[root@manage home]# sh logcopy.sh 
var partion 1% utilized
logcopy.sh: line 19: ((: 1% <= 79% : syntax error: operand expected (error token is "<= 79% ")

awkコマンドとdf -khの削除

[root@manage home]# df -kh | grep var | awk '{print $5}'
1%
[root@manage home]# df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda6             980M  642M  287M  70% /
/dev/sda1              95M   25M   65M  28% /boot
/dev/sda9             6.0G 1004K  5.7G   1% /home
/dev/sda7             4.6G  879M  3.5G  20% /usr/local
/dev/sda8             446G  2.7G  421G   1% /var

答え1

パーセント記号は、2番目のオペランドが必要なモジュロ演算子(例:8 % 5is)です。以下を3使用した(( size <= 79% ))場合、エラーはsize似ています。

入力からパーセント記号を削除してみましょう。

size=$(df -kh | awk '$6 == "/var" {print $5}')
size=${size%"%"}
if (( size < 80 )); then
    echo "/var is less than 80 % full"
fi

ここに${size%"%"}サフィックス除去拡張があります${var%word}。最初のものは%文法の一部であり、2番目のもの(引用されたもの)は%私たちが取り除くことです。ここにある引用は、${var%%word}類似性のために最短の代わりに最長の一致するサフィックスを削除します。使用することもできますが、${size%%%}読書はより混乱しているでしょう。

答え2

dfdf /varすべてのディスクに対して実行するのではなく、ターゲット()を指定できます。

GNU/Linux の場合、出力形式を指定できます。最後に%、、tr...sed substitutionを省略できます。

df /var --output=pcent | tail -1 |tr -d '%'
55

awkただし、オーバー出力を使用したい場合は、withを使用して移植性を向上させることをお勧めしますdfdf -Pディスクパスが長すぎると、出力を1行で取得できないことがあります。たとえば、次のようになります。

df -kh
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      3.9G  404M  3.3G  11% /
/dev/mapper/VolGroup00-LogVol05
                      3.9G  442M  3.3G  12% /home
/dev/mapper/VolGroup00-LogVol04
                      3.9G  261M  3.5G   7% /var
/dev/mapper/VolGroup00-LogVol03
                      3.9G  137M  3.6G   4% /tmp
/dev/mapper/VolGroup00-LogVol02
                      7.8G  3.6G  3.8G  49% /usr

関連情報