Shell scripts have limited functionality and are only used for simple automation, but this is afalse impression as they can be used for more complex tasks.
An example is an emulated 6502 system that runs in a busybox ash shell script, which creates a simple 6502 system with RAM, ROM, and an emulated serial port on STDIO, including the wozmon Apple 1 monitor and BASIC.
This shell script also includes a built-in monitor and debugger, useful for debugging hand-assembled 8-bit code; while the default machine has a 32k memory split between RAM and ROM, these limits are customisable by editing machine.sh.
It can also log execution via a socket, though its speed is relatively slow and requires adjusting the #! line to run on some systems.
This demonstrates that shell scripting can be used for more than simple automation tasks.