To make them versatile. After all, why expect the user to type in @target@[1] etc instead of just typing it out? The idea is to make it so someone types in !command (text) and then the script processes it into something useful. The commands are variables that contain the @ strings.