我有一个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。