Bash -gt:意外的運算符

Bash -gt:意外的運算符

我有一個checkSpace.sh檢查磁碟上已使用空間的命令,如果大於 80,則停止服務

#!/bin/bash

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o
if [ $percent -gt 80 ]; then
  sudo service motion stop
fi
echo "used space is"
echo $percent

但是當我用它運行它時,sudo sh checkSpace.sh它給了我:

1 
checkSpace.sh: 4: [: -gt: unexpected operator 
used space is

答案1

如果你想運行命令sudo df ....,你需要使用命令替換。因此,替換:

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

和:

percent=$(sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o)

什麼地方出了錯

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

在上面的命令中,shell 變數percent被暫時設定為該值sudo,然後該命令df /media/usb及其輸出被傳送到該tail命令。 percent沒有給出永久值,並且管道的輸出被發送到標準輸出。

相關內容