
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으로 전송됩니다.