2

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.

Vadim Kotov
  • 8,084
  • 8
  • 48
  • 62
Süleyman Orhan
  • 43
  • 1
  • 1
  • 3

2 Answers2

7

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

vivekyad4v
  • 13,321
  • 4
  • 55
  • 63
  • thank you very very much i tried to solve it about 1 day. the actually reason should be adhd :( :( thank you a lot. @vivekyad4v – Süleyman Orhan Jan 17 '18 at 09:04
  • no problem :) . Just a heads up - If you are satisfied with the answer always upvote it & mark it as correct. This helps us moving :) – vivekyad4v Jan 17 '18 at 09:06
  • 1
    Whether or not `[` is a built-in or external command, it's still a command, not part of the `if` statement or otherwise special syntax. – chepner Jan 17 '18 at 15:23
2

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

while [ "$disk_usage_rate" -gt 80 ]

Is it better ?

romaric crailox
  • 564
  • 1
  • 3
  • 15