Bash script command not found error in while loop

14.7k views Asked by At

I have problem and cant still handle with it. :( Here is my code

declare -i disk_usage_rate=$(df -h /appdata/SCT_CDR | cut -d '%' -f 1 | awk 'NR==2{print $5}')

while ["$disk_usage_rate" -gt 80]
do
...
...
done

I get the disk usage rate from df -h command. But in while loop I get the followig error. Btw it is bash script.

bash: [84: command not found

I tried so many things but I didnt solve yet.

2

There are 2 answers

3
vivekyad4v On BEST ANSWER

You are missing space near square brackets used in while loop such as below -

declare -i disk_usage_rate=$(df -h /appdata/SCT_CDR | cut -d '%' -f 1 | awk 'NR==2{print $5}')

while [ "$disk_usage_rate" -gt 80 ]
do
...
...
done

A bit of history: this is because '[' was historically not a shell-built-in but a separate executable that received the expresson as arguments and returned a result. If you didn't surround the '[' with space, the shell would be searching $PATH for a different filename (and not find it) . – Andrew Medico Jun 24 '09 at 1:13

Ref - bash shell script syntax error

1
romaric crailox On

I see one error : add a space after '[' and before ']' on your while line :

while [ "$disk_usage_rate" -gt 80 ]

Is it better ?