我正在尝试编写一个命令来查看我的电池状态,并在电池电量不足时暂停笔记本电脑。我尝试使用这样的东西:
#!/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")