[para obter conselhos gerais sobre scripts, consulte as outras respostas]
Esta resposta é sobre o uso de programas de linha de comando e também sobre grandes cadeias.
Para executar cadeias de programas CLI, e talvez muitas cadeias em sequência, o bash é o mais fácil. O Perl pode fazer o mesmo, mas o idioma é muito mais difícil de aprender e é muito mais complexo e, como muitos apontaram, é fácil escrever Perl inteligível.
Se você estiver interagindo com arquivos e parâmetros, o bash é mais fácil de começar porque você pode criar um protótipo no shell, copiar em um script e adicionar algumas matrizes e loops com o mínimo de sobrecarga.
Exemplos do que quero dizer:
$ 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}
No bash, é fácil agrupar isso em alguns loops sobre alguns desses parâmetros. No entanto , o código fica difícil de ler quando o script tem mais do que algumas dezenas de linhas. --- imagine 30 conjuntos de comandos (algumas linhas cada) para trinta gráficos de dados diferentes ---
Perl e Python podem ser melhores para scripts grandes porque possuem uma sintaxe mais limpa para loop e variáveis, mas os comandos bash devem ser gerados como strings, executados como subprocessos e stdin, stdout capturado. Isso pode ser feito, mas não pode substituir completamente o ambiente de shell nativo.
Se as conchas tivessem uma linguagem melhor, tudo isso seria evitado.