[для загальної поради щодо сценаріїв дивіться інші відповіді]
Ця відповідь стосується використання програм командного рядка, а також великих ланцюгів їх.
Для запуску ланцюгів програм CLI і, можливо, багатьох ланцюгів послідовно, bash є найпростішим. Perl може зробити те ж саме, але мову вивчити набагато складніше і набагато складніше, і як багато хто вказував, писати зрозумілий Perl легко.
Якщо ви перебираєте файли та параметри, bash найпростіше отримати b / c, ви можете прототипувати в оболонці, потім скопіюйте в сценарій і додайте кілька масивів і циклів з мінімальними накладними витратами.
Приклади того, що я маю на увазі:
$ 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}
У bash, легко обернути це за кілька циклів над деякими з цих параметрів. Однак код стає важко читати, коли сценарій перевищує кілька десятків рядків. --- уявіть 30 наборів команд (по кілька рядків у кожному) для тридцяти різних графіків даних ---
Perl і Python можуть бути кращими для великих сценаріїв, оскільки вони мають більш чистий синтаксис для циклічного циклу та змінних, але команди bash повинні бути сформовані як рядки, виконані як підпроцеси, і stdin, stdout, захоплені. Це можна зробити, але він не може повністю замінити рідне середовище оболонки.
Якби оболонки мали кращу мову, цього б уникнути.