Попробуйте в shell-скрипте открывать файл не через ">", а через ">>", убедившись, что перед операцией файла не существует.
Возможно, различные процессы каким-то образом получают несвязанные копии дескриптора файла, в которых позиция в файле не обновляется при печати из других процессов; тогда процесс 1 может напечатать свою букву a, а потом процесс 2 печатает свою букву b на ту же позицию в файле, затирая a от первого процесса. С консолью такой проблемы нет, потому что она не seekable, в ней нет позиции как таковой. Открывание файла для дозаписи преследует ту же цель — перед каждой операцией записи позиция будет устанавливаться на конец файла.