我有这段代码,它检查特定驱动器上的剩余磁盘空间,然后运行一组命令。
if [ "$(echo "$(df -h | awk '$1 == "drive_name" {print $4}' | sed 's/[T]//') >= 0.2" | bc)" -eq 1 ]; then
<run_these_commands>;
else
<run_other_commands>;
fi
Run Code Online (Sandbox Code Playgroud)
它有效,但是[] test一团糟。有一个更好的方法吗?
用适当的方式完成这一切df参数来做这一切:
declare -- drive=\'/\'\ndeclare -i minsize=$((2*10**11)) # 200 GB\nif (($(df -B1 --output=avail "$drive" | tail -1)>=minsize))\nthen\n printf \'There is more than 200 GB left on %s\\n\' "$drive"\nelse\n printf \'There is less than 200 GB left on %s\\n\' "$drive"\nfi\nRun Code Online (Sandbox Code Playgroud)\n\ndf:
-B1:将显示块大小设置为 1 字节,因此它始终是整数。
--output=avail:仅显示可用空间字段。
"$drive":仅显示设备或挂载点
| tail:
-1:仅显示最后一行(跳过标题行,因此它仅返回可用空间的整数字节量)。((\xe2\x80\xa6)):Bash 允许独立算术,因此在if条件中使用它。由于仅处理整数值,因此可以由 shell 本机处理,而不需要bc.
| 归档时间: |
|
| 查看次数: |
350 次 |
| 最近记录: |