[para consejos generales sobre secuencias de comandos, vea las otras respuestas]
Esta respuesta trata sobre el uso de programas de línea de comandos y también grandes cadenas de ellos.
Para ejecutar cadenas de programas CLI, y quizás muchas cadenas en secuencia, bash es la más fácil. Perl puede hacer lo mismo, pero el lenguaje es mucho más difícil de aprender y es mucho más complejo, y como muchos han señalado, es fácil escribir Perl inteligible.
Si está iterando sobre archivos y parámetros, bash es más fácil de comenzar porque puede crear prototipos en el shell, luego copiar en un script y agregar algunas matrices y bucles con una sobrecarga mínima.
Ejemplos de lo que quiero decir:
$ cat input.dat | numerical_model source_data ${SRC} grid_size ${GRID_SIZE} param1 ${P1} param2 ${P2} | tee ${OUTPUT} | plotter title ${TITLE} ylabel ${YLABEL} xlabel ${XLABEL} > ${OUTPUT_FIG}
$ cat ${OUTPUT} | stats_cmd bin_size ${BINSIZE} dist_type ${DIST_TYPE} | tee ${OUTPUT_STATS} | plotter plot_type ${PLOT_TYPE} title ${TITLE_STATS} > ${OUTPUT_FIG_STATS}
En bash, es fácil envolverlo en unos pocos bucles sobre algunos de esos parámetros. sin embargo , el código se vuelve difícil de leer una vez que el script tiene más de unas pocas decenas de líneas. --- imagine 30 conjuntos de comandos (unas pocas líneas cada uno) para treinta tramas de datos diferentes ---
Perl y Python podrían ser mejores para scripts grandes porque tienen una sintaxis más limpia para bucles y variables, pero los comandos bash deben generarse como cadenas, ejecutarse como subprocesos y capturar stdin, stdout. Se puede hacer, pero no puede reemplazar completamente el entorno de shell nativo.
Si los proyectiles tuvieran un mejor idioma, todo esto se evitaría.