A sintaxe [ ... ]
é na verdade um comando , e não é nada especial para o shell. É outro nome para o comando test
- consulte man test
ou apenas man [
.
O que você quer é avaliação aritmética :
delete="$((size-value))"
O que está acontecendo em seu código é que, como você não citou o valor que está atribuindo à variável, toda a linha foi dividida em palavras pelo shell:
delete=[
"$size"
-
"$value"
]
O primeiro deles é tratado como uma atribuição de variável, atribuindo a string "["
à variável delete
; o resto é então considerado como um comando.
Como 78 (a expansão de "$size"
) não é um comando válido, o shell lança um erro.