Linux

為什麼這個 bash 腳本不起作用?

  • April 19, 2017

我正在製作一個 bash 腳本來檢查磁碟上的可用空間:

if [ check_space -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi

check_space返回一個數字52check_space函式是:

check_space() {
df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//';
}

它正在返回./backup.sh: line 63: [: check_space: a full expression was expected(我是從西班牙語翻譯過來的,所以可能不是準確的翻譯)。有什麼問題?

您的情況實際上並未呼叫 check_space,您需要類似以下內容:

if [ `check_space` -gt "85" ]; then

這是你可以做到的…

#!/bin/bash

CHECK_SPACE=`df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//'`;

if [ $CHECK_SPACE -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi

我不得不拿出我的 bash 備忘單。bash 中的函式不能返回值,只能返回退出狀態。

引用自:https://serverfault.com/questions/304136