检查可用驱动器空间的 Bash 命令(“检查十进制数的值”)

Jos*_*osh 0 bash

我有这段代码,它检查特定驱动器上的剩余磁盘空间,然后运行一组命令。

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一团糟。有一个更好的方法吗?

Léa*_*ris 6

用适当的方式完成这一切df参数来做这一切:

\n\n
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\n
Run Code Online (Sandbox Code Playgroud)\n\n

df:

\n\n
    \n
  • -B1:将显示块大小设置为 1 字节,因此它始终是整数。

  • \n
  • --output=avail:仅显示可用空间字段。

  • \n
  • "$drive":仅显示设备或挂载点

  • \n
\n\n

| tail:

\n\n
    \n
  • -1:仅显示最后一行(跳过标题行,因此它仅返回可用空间的整数字节量)。
  • \n
\n\n

((\xe2\x80\xa6)):Bash 允许独立算术,因此在if条件中使用它。由于仅处理整数值,因此可以由 shell 本机处理,而不需要bc.

\n