if [ check_space -gt "85" ]; then echo "removing" else echo "not removing" fi
check_space
返回一个数字,如52
, check_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