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没有赋予永久值,并且管道的输出被发送到 stdout。

相关内容