【问题标题】:df command works in terminal, but not in bash scriptdf 命令在终端中有效,但在 bash 脚本中无效
【发布时间】:2020-06-04 07:39:24
【问题描述】:

我在一个网站上找到了下面的代码。我知道它的作用并理解它,但我无法让它正常工作。当我在 Redhat 6.10 中运行它时,我收到一条错误消息,指出“第 6 行:[: /: integer expression expected”。

当我从终端中的 CURRENT 变量运行 df 代码时,它会输出“21”。当它在脚本中时,它会输出“/”。

如果“/”目录超过 50%,我试图让它做的是给我发电子邮件。任何想法为什么代码的 df 部分在终端中有效,但在脚本中无效?

#!/bin/bash

CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g')
THRESHOLD=50

if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
        mail -s 'Disk Space Alert' E-MAIL REMOVED << EOF
Your root partition remaining free space is critically low. Used: $CURRENT%
EOF
fi

【问题讨论】:

  • 将命令分解为越来越短的部分,在脚本中运行和运行,看看有什么不同。你也可以试试type df,进出脚本,看看它是否使用了不同的df
  • 您可以通过选择--output[=FIELD_LIST] 来告诉df 要输出什么,例如df / --output=pcent.

标签: bash redhat linux-disk-free


【解决方案1】:

你可能会使用:

CURRENT=$(df / --output=pcent | tail -n1 | sed 's/%//g')

【讨论】:

  • 当我在终端和脚本中输入“type df”时,它显示 df 在 /bin/df 中。我已经分解了 CURRENT 脚本的部分,我从终端得到了 21 的返回。当我在脚本中执行此操作时,它给了我整数错误。当我尝试使用 --output=pcent 时,我得到“第 6 行:[: /: integer expression expected”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-12
  • 1970-01-01
  • 2021-02-20
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多