Diferencia entre $ {} y $ () en Bash [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Backticks vs llaves en Bash 2 respuestas

Tengo dos preguntas y podría ayudarme a entenderlas.

Cuál es la diferencia entre${} y$()? Entiendo que() significa ejecutar el comando en un shell separado y colocar$ significa pasar el valor a variable. ¿Alguien puede ayudarme a entender esto? Por favor, corríjame si estoy equivocado.

Si podemos usarfor ((i=0;i<10;i++)); do echo $i; done y funciona bien, entonces ¿por qué no puedo usarlo comowhile ((i=0;i<10;i++)); do echo $i; done? ¿Cuál es la diferencia en el ciclo de ejecución para ambos?

Respuestas a la pregunta(3)

Su respuesta a la pregunta