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.