读取 bash 脚本中命令的数字 if 条件

读取 bash 脚本中命令的数字 if 条件

我正在尝试编写一个命令来查看我的电池状态,并在电池电量不足时暂停笔记本电脑。我尝试使用这样的东西:

#!/bin/bash
if [ $(acpi -b | cut -c 25) < 11 ]
then notify-send "Hello"
fi

这可行,但由于某种原因,如果我用一位数(如 5)替换 11,则会收到错误

battery-notify-standby: line 2: 5: No such file or directory

我还尝试用两个圆括号替换方括号,以将其指定为算术表达式。然后我得到

battery-notify-standby: line 2: ((: < 11 : syntax error: operand expected (error token is "< 11 ")

我不确定到底出了什么问题。有人可以帮我吗?

答案1

shell 中的运算<符是重定向运算符,而不是比较运算符。您似乎有一个名为 的文件11,因此似乎可以读取该文件,并且可以正常工作。 (但与检查输出无关 - 始终验证您的假设!)

您正在寻找的比较运算符是-lt,而不是<

答案2

看来您的命令$(acpi -b | cut -c 25)有错误。当您将 更改为 时,[ ]错误(( ))与您的命令产生空白相同

bash -c '((  < 11))'
bash: line 1: ((: < 11: syntax error: operand expected (error token is "< 11")

相关内容