gpt4 book ai didi

linux - Shell:如何检查可用空间并在空间不足时退出?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:26:52 24 4
gpt4 key购买 nike

我想在执行脚本之前检查是否有足够的空间。我想过

#!/bin/bash
set -e
cd
Home=$(pwd)
reqSpace=100000000
if [ (available Space) < reqSpace ]
echo "not enough Space"
exit 1
fi
do something

我要检查的空间

df | grep $Home

有什么建议吗?

最佳答案

将它们放在一起(为简洁起见省略了 set -ecd;特定于 Bash 的语法 - 不符合 POSIX):

#!/bin/bash

# Note: Numbers are 1024-byte units on Linux,
# and 512-byte units on macOS.
reqSpace=100000000
availSpace=$(df "$HOME" | awk 'NR==2 { print $4 }')
if (( availSpace < reqSpace )); then
echo "not enough Space" >&2
exit 1
fi

df "$HOME"输出有关 $HOME 磁盘使用情况的统计信息目录的挂载点,以及 awk 'NR==2 { print $4 }'从第二个输出行(第一行是标题行)中提取(POSIX 规定的)第 4 个字段,其中包含 Linux 上 1024 字节单位的可用空间[1],以及 512- macOS 上的字节单位;将命令包含在 $(...) 中允许捕获其输出并将其分配给变量 availSpace .

注意 (( ... )) 的使用,算术条件,执行比较,它允许:

  • 在没有 $ 的情况下引用变量前缀和

  • 使用常用的算术比较运算符,例如 < (而如果您使用 -le[ ... ],则必须使用 [[ ... ]])

最后,注意 >&2 ,重定向 echo输出到 stderr,这是应该发送错误消息的地方。


[1] 如果您定义 POSIXLY_CORRECT环境变量(任意值),df 的 GNU 实现也使用 POSIX 规定的 512 字节单元;例如,POSIXLY_CORRECT= df "$HOME" .

关于linux - Shell:如何检查可用空间并在空间不足时退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41127585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com