[para conselhos gerais sobre scripts, veja as outras respostas]
Esta resposta é sobre o uso de programas de linha de comando e também grandes cadeias deles.
Para a execução de cadeias de programas CLI e talvez muitas cadeias em seqüência, o bash é o mais fácil. Perl pode fazer o mesmo, mas a linguagem é muito mais difícil de aprender e é muito mais complexa, e como muitos apontaram, é fácil escrever Perl inteligível.
Se você estiver iterando sobre arquivos e parâmetros, o bash é mais fácil de obter b / c, você pode criar um protótipo no shell, copiar em um script e adicionar alguns arrays 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 para envolver isso em alguns loops em alguns desses parâmetros. No entanto , o código torna-se difícil de ler quando o script é mais do que algumas dezenas de linhas. --- imagine 30 conjuntos de comandos (algumas linhas cada) para trinta diferentes gráficos de dados ---
Perl e Python podem ser melhores para scripts grandes porque eles têm uma sintaxe mais limpa para loops 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 totalmente o ambiente de shell nativo.
Se os shells tivessem uma linguagem melhor, tudo isso seria evitado.