
我有一個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
在上面的命令中,shell 變數percent
被暫時設定為該值sudo
,然後該命令df /media/usb
及其輸出被傳送到該tail
命令。 percent
沒有給出永久值,並且管道的輸出被發送到標準輸出。