Вы не используете чистый Bash, вы вызываете внешние программы, такие как cat, tail и head. Различие между ними и sed или awk с точки зрения вашего назначения не описано в вашем посте.
Я надеюсь, что вы действительно знаете свои требования, поскольку ваше текущее решение не квалифицируется как Bash-only.
Это будет решение в чистом Bash:
read line < table; [[ $line =~ ^[^$'\t']* ]]; printf "${BASH_REMATCH[0]}" > outputFile
Кроме того, версия Bash не имеет ничего общего с тем, как работают tail или cat, поскольку они являются отдельными программами, как и сам bash. Возможно, проблема в том, что на школьном сервере есть более старые версии, в основном все.