为什么这个bash脚本不工作?

我做了一个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 (我从西class牙语翻译,所以也许不是精确的翻译)。 什么可能是错的?

你的条件实际上并没有调用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中的函数不能返回一个值,只能返回一个退出状态。

“85”用引号是一个string,不是一个数字… -gt不起作用。

build议:

 CHECK_SPACE=$(df -P /dev/sda1 | awk '$1=="/dev/sda1"{sub("%","");print $5}') if [ $CHECK_SPACE -gt 85 ]; then echo "removing" else echo "not removing" fi