Bash -gt: 예상치 못한 연산자

Bash -gt: 예상치 못한 연산자

checkSpace.sh디스크의 사용된 공간을 확인하고 80보다 크면 서비스를 중지하는 기능이 있습니다.

#!/bin/bash

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o
if [ $percent -gt 80 ]; then
  sudo service motion stop
fi
echo "used space is"
echo $percent

하지만 내가 그것을 실행하면 sudo sh checkSpace.sh나에게 다음과 같은 결과가 나타납니다.

1 
checkSpace.sh: 4: [: -gt: unexpected operator 
used space is

답변1

명령을 실행하려면 sudo df ....다음을 사용해야 합니다.명령 대체. 따라서 다음을 교체하십시오.

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

와 함께:

percent=$(sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o)

무엇이 잘못됐나요?

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

위 명령에서는 쉘 변수가 percent일시적으로 해당 값으로 설정된 sudo다음 명령 df /media/usb과 해당 출력이 tail명령으로 전송됩니다. percent영구적인 값이 주어지지 않으며 파이프라인의 출력이 stdout으로 전송됩니다.

관련 정보