Bash条件语句

cod*_*ude 1 bash conditional

我意识到这可能是一个非常简单的问题,但我无法弄清楚为什么这不起作用.我正在尝试检查文件夹是否大于35GB,如果是,请删除所有超过3天的文件.

使用此代码:

#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
   find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 syntax error near unexpected token `fi'
Run Code Online (Sandbox Code Playgroud)

C2H*_*5OH 5

then关键字之前缺少分号或行跳转.还要注意Bash >用来比较字符串,而不是数字.对于数值比较,您应该使用其中一个-gt或Bash特定的((算术表达式求值程序.例如:

#!/bin/bash
MAX=35000000000
if (( $(du -sb ~/MEGA | cut -f1) > $MAX ))
then
   find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
Run Code Online (Sandbox Code Playgroud)

参考:Bash条件结构

  • 只是为了澄清字符串与数字比较之间的区别:`[5 \> 35000000000]`将评估为真,因为"5"在"3"之后. (3认同)