Bash 스크립트에서 명령의 숫자 if 조건 읽기

Bash 스크립트에서 명령의 숫자 if 조건 읽기

배터리 상태를 확인하고 배터리가 부족할 때 노트북을 일시 중지하는 명령을 작성하려고 합니다. 나는 다음과 같은 것을 사용하려고합니다 :

#!/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")

관련 정보