If you want the element to be a pointer to an array of struct then you can declare and allocate like this...
struct command (*command)[2]; /* note the parentheses */
temp->command = malloc(sizeof *temp->command);
... and if you want the element to be an array of pointers then you can do something like this:
struct command *command[2]; /* equivalent to *(command[2]) */
temp->command[0] = malloc(sizeof *temp->command[0]);
temp->command[1] = malloc(sizeof *temp->command[1]);
(Note that a good way to determine "array of pointer" vs. "pointer to array" is to work your way outwards from the variable name, guided by operator precedence and associativity rules. For example if your declaration is "sometype *myvar[2]" you would start with "myvar is an array of ..." rather than "myvar is a pointer to..." because [] has a higher precedence than *.)
The error message was because your cast indicated type->command was a pointer to struct, which was a conflict since you declared it as an array of pointers to struct. However you shouldn't need to cast unless you are using a C++ compiler.
temp->command[0] = ...andtemp->command[1] = ...commandmember is not a pointer to array of a structure, it's an array of two pointers to structures.