Me parece una buenísima pregunta. Que no puede tener sino la respuesta de siempre: «depende».
Depende de muchas cosas, de muchos usos y de muchos contextos. En términos generales, lo que yo consideraría un buen script, debe cumplir las siguientes características:
- Hacer una cosa y hacerla bien, una de las premisas fundamentales y básicas de la filosofía de Unix. Mejor tener varios scripts modularizados y conectados entre sí mediante pipes, que uno solo que haga todo. Esto significa simplicidad y modularidad.
- Robustez y seguridad por diseño. El script debe tener control de errores posibles, prevención de éstos y capacidad de marcha atrás.
- Portabilidad e independencia. Evitar el uso de dependencias, como systemd o programas concretos.
- El código debe ser limpio, brevemente comentado y estructurado.
- Eficiencia. Usar herramientas correctas para cada necesidad: awk, sed, cut…