【发布时间】:2020-06-24 18:28:35
【问题描述】:
我在 shell 脚本中遇到 [: missing `]' 错误
memuse=$ free -m
if [ $memuse >80]
then
echo "Attention: memory utilisation is high on $(hostname) at $(date)"
这是我的代码,我得到了类似的错误
[tono@webminal.org ~]$sh ./memory_alert.sh
total used free shared buff/cache available
Mem: 14522 2128 4004 1845 8389 10096
Swap: 0 0 0
./memory_alert.sh: line 2: [: missing `]'
【问题讨论】:
-
使用此链接进行调试:shellcheck.net
-
一个其他人没有提到的问题是你在
[ ... ]中没有使用>进行数值比较。如果$memuse包含一个整数值(它肯定没有),则比较将是if [ "$memuse" -gt 80 ] -
你的代码有很多问题,但最关键的引发错误的是
]之前缺少空格。尽管修复 5hat 仍然不会使您的代码运行。见@user123 的评论 -
@TonoKuriakose :仅供参考(正如其他人已经指出您程序中的错误):您的
if语句实际上意味着运行命令test $memuse >80],即使用扩展值$memuse作为test的参数,然后将test的标准输出写入名为80]的文件中。我猜你会在脚本的工作目录中找到同名的空文件。 -
这能回答你的问题吗? Bash scripting missing ']'