Bash 条件语句
Bash conditional statement
我意识到这可能是一个非常简单的问题,但我不明白为什么这不起作用。我正在尝试检查文件夹是否大于 35GB,如果是,请删除其中所有超过 3 天的文件。
使用此代码:
#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
我收到以下错误:
syntax error near unexpected token `fi'
then
关键字前缺少分号或换行。还要注意 Bash 使用 >
来比较字符串,而不是数字。对于数字比较,您应该使用 -gt
或 Bash 特定的 ((
算术表达式计算器。例如:
#!/bin/bash
MAX=35000000000
if (( $(du -sb ~/MEGA | cut -f1) > $MAX ))
then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
改变if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
至
if (( $(du -sb ~/MEGA | cut -f1) > MAX )); then
if 语句的格式:
if condition;then
something
fi
或
if condition
then
something
fi
或
if condition;then something;fi
注:
您可以使用;
合并多行
您可以在算术 if 语句
中删除 $MAX
中的 $
Bash 错误消息有时具有误导性。你忘记了 then 之前的分号。
#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) -gt $MAX ]; then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
我意识到这可能是一个非常简单的问题,但我不明白为什么这不起作用。我正在尝试检查文件夹是否大于 35GB,如果是,请删除其中所有超过 3 天的文件。
使用此代码:
#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
我收到以下错误:
syntax error near unexpected token `fi'
then
关键字前缺少分号或换行。还要注意 Bash 使用 >
来比较字符串,而不是数字。对于数字比较,您应该使用 -gt
或 Bash 特定的 ((
算术表达式计算器。例如:
#!/bin/bash
MAX=35000000000
if (( $(du -sb ~/MEGA | cut -f1) > $MAX ))
then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi
改变if [ $(du -sb ~/MEGA | cut -f1) \> $MAX ] then
至
if (( $(du -sb ~/MEGA | cut -f1) > MAX )); then
if 语句的格式:
if condition;then
something
fi
或
if condition
then
something
fi
或
if condition;then something;fi
注:
您可以使用
;
合并多行您可以在算术 if 语句
中删除
$MAX
中的 $
Bash 错误消息有时具有误导性。你忘记了 then 之前的分号。
#!/bin/bash
MAX=35000000000
if [ $(du -sb ~/MEGA | cut -f1) -gt $MAX ]; then
find ~/MEGA/* -mtime +3 -exec rm -fr {} \;
fi