【问题标题】:BASH -gt unary operator expected errorBASH -gt 一元运算符预期错误
【发布时间】:2015-10-25 08:37:03
【问题描述】:

我已在以前版本的 OSX 上成功使用以下脚本,以在磁盘容量达到定义的阈值时提醒我。

在 Yosemite 上运行时,它不起作用:

% bash disk-full-alert.sh 
disk: 10766513
df: 10766513: No such file or directory
output:
current:
threshold: 65
_________________

disk-full-alert.sh: line 26: [: -gt: unary operator expected
disk: 129154082
df: 129154082: No such file or directory
output:
current:
threshold: 65
_________________

disk-full-alert.sh: line 26: [: -gt: unary operator expected
disk: 710743471
df: 710743471: No such file or directory
output:
current:
threshold: 65
_________________

disk-full-alert.sh: line 26: [: -gt: unary operator expected

脚本:

#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin export PATH
HOSTNAME='server.example.com'
ERECIP='dan@example.com'
# Threshold is percentage full
THRESHOLD=65


get_data() {
  df -l | grep -v Mounted| awk ' { print $6 } '
}

get_data | while IFS= read -r disk
do
echo disk: $disk
OUTPUT=($(LC_ALL=C df -P ${disk}))
echo output: $OUTPUT
CURRENT=$(echo ${OUTPUT[11]} | sed 's/%//')
echo current:  $CURRENT
echo threshold: $THRESHOLD
echo _________________
echo " "
[ $CURRENT -gt $THRESHOLD ] &&
 (
echo "From: Server Admin <admin@$HOSTNAME>"
echo "To: $ERECIP"
echo "Subject: Warning!! $disk file system is $CURRENT% full on $HOSTNAME"
echo ""
date
echo ""
echo "ALERT!!"
echo " "
echo The $disk file system is $CURRENT% full
echo

) | /usr/sbin/sendmail -it

最受赞赏的想法或建议!

【问题讨论】:

  • 请关注MCVE。您已经有了一个良好的开端,但“不工作”不符合错误描述的条件。

标签: macos bash shell osx-yosemite


【解决方案1】:

几乎可以肯定df 的输出已经改变,导致您的脚本不正确。看起来第 6 列,本来是mount point,不知何故成为了指标之一(blocksavailableused 等等)。

您需要运行 df -l 来检查第 6 列是否仍然符合您的需要。如果没有,请修复脚本或找到以“旧”模式运行 df 的方法,以便恢复为旧格式。

【讨论】:

  • 你是对的,我需要的是第 9 列!谢谢你的帮助。我会在一分钟内将此标记为已回答。干杯!
  • 老鼠,现在下面给了我新的错误:CURRENT=$(echo ${OUTPUT[12]} | sed 's/%//') 我不明白这个命名法。 ..想法?
  • @Dan,这只是为了从使用百分比字段的末尾删除%。检查df -P 的输出,如果需要,询问another 完整信息的问题(类似于这个问题(顺便说一句,做得很好),包括脚本和输出的脚本和输出df -kdf -P)。这就是 SO 的工作方式,并保证有更多的眼睛帮助您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多