배터리 상태를 확인하고 배터리가 부족할 때 노트북을 일시 중지하는 명령을 작성하려고 합니다. 나는 다음과 같은 것을 사용하려고합니다 :
#!/bin/bash
if [ $(acpi -b | cut -c 25) < 11 ]
then notify-send "Hello"
fi
이것은 작동하지만 어떤 이유로 11을 5와 같은 한 자리 숫자로 바꾸면 오류가 발생합니다.
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
셸의 연산자는 <
비교 연산자가 아닌 리디렉션 연산자입니다. 이름이 지정된 파일이 있어서 11
읽을 수 있고 제대로 작동하는 것 같습니다. (그러나 출력 확인과는 아무런 관련이 없습니다. 항상 가정을 확인하십시오!)
찾고 있는 비교 연산자는 -lt
이고 가 아닙니다 <
.
답변2
명령에 오류가 있는 것 같습니다 $(acpi -b | cut -c 25)
. [ ]
오류는 다음으로 변경할 때 (( ))
공백을 생성하는 명령과 동일합니다.
bash -c '(( < 11))'
bash: line 1: ((: < 11: syntax error: operand expected (error token is "< 11")